在b-tree基礎上改造為b+tree
節點頁儲存葉子頁引用
葉子頁上儲存整行資料
葉子頁上也有節點頁上的索引及索引的行資料
葉子頁之間互有引用
innodb預設主鍵位聚簇索引;如果沒有主鍵、有唯一性索引,則使用唯一索引做聚簇索引;如果也沒有唯一性索引則預設建立乙個隱藏主鍵做聚簇索引
myisam主鍵則不是聚簇索引,只是普通唯一性索引。
如果有需要聚簇在一起的資料,使用該字段做聚簇索引;否則盡可能使用無意義自增列做聚簇索引。
優點
物理上連續
順序io
可視為「資料表」,索引上儲存了資料行
缺點
如果按照聚簇索引順序插入,效率極高;反之沒有效率提公升。
導致非聚簇索引變大。因為要在非聚簇索引的葉子節點上儲存聚簇索引值
uuid做聚集索引缺點
uuid是隨機資料,寫入資料時不是順序新增至最後一位,而是計算應該儲存的值的位置,隨機io查詢到當前頁再載入到記憶體。如果當前頁飽和,再插入會導致頁**,對於io密集型應用,可能會導致頻繁頁**。結果是頁分布稀疏,頁數變多,磁碟占用過大。
uuid本身占用32位(去-)或36位,會導致非聚簇索引占用變大。
自增缺點
高併發時,會出現大量併發競爭最新的上界資料。
mysql 聚簇索引例項 MySQL聚簇索引
mysql作為迭代了很多個版本的資料庫。在資料庫的索引上實現了很多的優化版本,從一開始的只允許乙個表有乙個列為索引值,到目前版本可支援多個列建立索引值,更多關於索引優化版本的描述,以後有機會筆者再寫一篇文章。本文主要介紹索引當中的聚簇索引。mysql官方對聚簇索引的定義是,聚簇索引並不是一種單獨的索...
mysql聚簇索引設定 Mysql 聚簇索引
整體概述 1.innodb的主索引檔案上 直接存放該行資料,稱為聚簇索引,次索引指向對主鍵的引用 2.myisam中,主索引和次索引,都指向物理行 磁碟位置 哈哈,說了兩句貌似聽不懂的話。一。通俗解釋 我們可以這麼理解 聚簇索引 innodb 索引的葉節點就是資料節點,下邊實打實有資料。非聚簇索引 ...
mysql 聚簇索引表 Mysql的聚簇索引
聚簇索引並不是一種單獨的索引型別,而是一種資料儲存方式。innodb的聚簇索引實際上是在同乙個結構中儲存了b tree索引和資料行。乙個表只能有乙個聚簇索引。innodb中,葉子頁包含了行的全部資料,但是節點頁只包含了索引列。innodb通過主鍵聚集資料。優點 1.可以把相關資料儲存在一起。例如實現...