Mysql 聚簇索引

2021-10-08 18:30:34 字數 746 閱讀 6942

在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.可以把相關資料儲存在一起。例如實現...