您好,登錄后才能下訂單哦!
MySQL的索引機(jī)制原因是什么,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
在此基礎(chǔ)上,我還從簡(jiǎn)朝陽(yáng)的博客上載錄了幾篇介紹mysql中不同存儲(chǔ)引擎不同的索引結(jié)構(gòu):
1.Innodb
Innodb 作為 MySQL 中使用最為廣泛的 事務(wù)型存儲(chǔ)引擎,不僅在事務(wù)實(shí)現(xiàn)數(shù)據(jù)版本控制方面和其他存儲(chǔ)引擎有一定的區(qū)別,其數(shù)據(jù)結(jié)構(gòu)也是以非常有特點(diǎn)的方式存儲(chǔ)的。
每個(gè)Innodb表的數(shù)據(jù)其實(shí)可以說(shuō)就是以一個(gè)樹(shù)型(B-Tree)結(jié)構(gòu)存儲(chǔ)的,表的數(shù)據(jù)和主鍵(Primary Key)共同組成了一個(gè)索引結(jié)構(gòu),也就是我們常說(shuō)的Innodb的Clustered Primary Key。在這個(gè)Clustered Primary Key中,Leaf Nodes其實(shí)就是實(shí)際的表記錄,我們常規(guī)理解上的索引信息全部在Branch Nodes上面。
除了Clustered Primary Key之外的其他所有索引在Innodb中被稱(chēng)為Secondary Index。Secondary Index就和普通的B-Tree索引差不多了,只不過(guò)在Secondary Index的所有Leaf Nodes上面同時(shí)包含了所指向數(shù)據(jù)記錄的主鍵信息,而不是直接指向數(shù)據(jù)記錄的位置信息。
所以,在 Innodb 中,如果主鍵值占用存儲(chǔ)空間較大的話(huà),會(huì)直接影響整個(gè)存儲(chǔ) Innodb 表所需要的物理空間,同時(shí)也會(huì)直接影響到 Innodb 的查詢(xún)性能。
2. MyISAM存儲(chǔ)引擎
在此之前曾經(jīng)寫(xiě)過(guò)一篇介紹 “Innodb 索引結(jié)構(gòu)了解 – Innodb Index Structure” 的文章,這次再接著分析一下 MyISAM 存儲(chǔ)引擎索引的 基本存儲(chǔ)結(jié)構(gòu)。
從索引基本的存放數(shù)據(jù)結(jié)構(gòu)來(lái)說(shuō),MyISAM 的索引不論是 Primary Key 還是普通 Index,存儲(chǔ)結(jié)構(gòu)都基本一樣,基本結(jié)構(gòu)都是 Balance Tree (簡(jiǎn)稱(chēng)為 B-Tree),所有的鍵值詳細(xì)信息和行“指針”信息都存放于 B-Tree 的 Leaf Nodes 上面。這個(gè)基本的數(shù)據(jù)結(jié)構(gòu)和 MySQL 的其他存儲(chǔ)引擎如 Innodb 也基本相同。但是,MyISAM 的索引并不像 Innodb 存儲(chǔ)引擎那樣 Primary Key 和 Secondary Index 中存放的數(shù)據(jù)存在較大區(qū)別。在 MyISAM 存儲(chǔ)引擎中,Primary Key 和其他的普通 Index 的主要區(qū)別僅僅在于 Primary Key 的索引鍵需要滿(mǎn)足是非空的唯一值而已,另外一個(gè)區(qū)別其實(shí)也是每一個(gè)普通索引之間都存在的區(qū)別,就是整個(gè)索引樹(shù)的鍵值排列順序不太一樣。
由于 MyISAM 存儲(chǔ)引擎中數(shù)據(jù)行的存儲(chǔ)分為固定長(zhǎng)度和動(dòng)態(tài)長(zhǎng)度兩種,所以在 MyISAM 存儲(chǔ)引擎的數(shù)據(jù)文件中定位一行數(shù)據(jù)所需要信息也存在兩種方式。一種是直接通過(guò)行號(hào)(row number)來(lái)定位固定長(zhǎng)度表數(shù)據(jù)的行,另外一種是通過(guò)其他一些相對(duì)的文件位置標(biāo)識(shí)信息來(lái)定位動(dòng)態(tài)長(zhǎng)度表數(shù)據(jù)的行,這里我們姑且將兩種方式統(tǒng)稱(chēng)為RID(Row ID)吧。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。