14.8.2.2 InnoDB索引的物理結構

原文:https://dev.mysql.com/doc/refman/5.7/en/innodb-physical-structure.html

14.8.2.2 The Physical Structure of an InnoDB Index

除空間索引外,InnoDB索引都是使用B-tree.空間索引使用R-tree,R-tree是多維度的特殊數據結構.索引記錄存儲在葉子節點上,默認索引的頁大小爲16KB.

當生成InnoDB聚集索引時,InnoDB會爲後續的插入和更新預留1/16頁空間.如果數據是按順序插入的(升序或降序),此時頁的存儲會達到15/16.如果是隨機插入,頁的使用率從1/2到15/16.

InnoDB在創建或重建B-tree索引時負載會很高.這種創建索引的方式成爲排序索引構建.innodb_fill_factor定義了數據佔頁的百分比,剩餘空閒空間爲以後的插入和更新數據預留.空間索引不支持排序索引構建.innodb_fill_factor設置100表示在頁上空閒1/16.

如果InnoDB索引頁的數據佔比低於MERGE_THRESHOLD(默認50%),引擎將嘗試將數據分配到鄰居節點並釋放當前節點.MERGE_THRESHOLD配置對 B-tree and R-tree都有效.

所有的表空間都按innodb_page_size設置的值生成相應大小的頁,該配置只能在MySQL初始化實例之前設置纔有效.該值一旦定義,只能通過重新初始化MySQL實例才能修改.頁支持的大小:64KB, 32KB, 16KB (default), 8KB, and 4KB,可以通過設置innodb_page_size爲64k, 32k, 16k, 8k, and 4k來指定相應的頁大小.

從MySQL 5.7開始頁支持32KB和64KB.

如果MySQL在啓動時制定了InnoDB引擎的頁大小,那麼數據文件和日誌文件不能使用不同的頁大小。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章