真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

MyISAM與InnoDB索引實現(xiàn)的對比分析

小編給大家分享一下MyISAM與InnoDB索引實現(xiàn)的對比分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

堅守“ 做人真誠 · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價值觀,專業(yè)網站建設服務10余年為成都成都PVC花箱小微創(chuàng)業(yè)公司專業(yè)提供成都定制網頁設計營銷網站建設商城網站建設手機網站建設小程序網站建設網站改版,從內容策劃、視覺設計、底層架構、網頁布局、功能開發(fā)迭代于一體的高端網站建設服務。

MyISAM索引實現(xiàn)

MyISAM引擎使用B+Tree作為索引結構,葉節(jié)點的data域存放的是數(shù)據記錄的地址。如圖:

MyISAM與InnoDB索引實現(xiàn)的對比分析

這里設表一共有三列,假設我們以Col1為主鍵,則上圖是一個MyISAM表的主索引(Primary key)示意??梢钥闯鯩yISAM的索引文件僅僅保存數(shù)據記錄的地址。在MyISAM中,主索引和輔助索引(Secondary key)在結構上沒有任何區(qū)別,只是主索引要求key是唯一的,而輔助索引的key可以重復。如果我們在Col2上建立一個輔助索引,則此索引的結構如下圖所示:

MyISAM與InnoDB索引實現(xiàn)的對比分析

同樣也是一顆B+Tree,data域保存數(shù)據記錄的地址。因此,MyISAM中索引檢索的算法為首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,則取出其data域的值,然后以data域的值為地址,讀取相應數(shù)據記錄。
MyISAM的索引方式也叫做“非聚集”的,之所以這么稱呼是為了與InnoDB的聚集索引區(qū)分。

InnoDB索引實現(xiàn)

雖然InnoDB也使用B+Tree作為索引結構,但具體實現(xiàn)方式卻與MyISAM截然不同。

第一個重大區(qū)別是InnoDB的數(shù)據文件本身就是索引文件。從上文知道,MyISAM索引文件和數(shù)據文件是分離的,索引文件僅保存數(shù)據記錄的地址。而在InnoDB中,表數(shù)據文件本身就是按B+Tree組織的一個索引結構,這棵樹的葉節(jié)點data域保存了完整的數(shù)據記錄。這個索引的key是數(shù)據表的主鍵,因此InnoDB表數(shù)據文件本身就是主索引。

MyISAM與InnoDB索引實現(xiàn)的對比分析

上圖是InnoDB主索引(同時也是數(shù)據文件)的示意圖,可以看到葉節(jié)點包含了完整的數(shù)據記錄。這種索引叫做聚集索引。因為InnoDB的數(shù)據文件本身要按主鍵聚集,所以InnoDB要求表必須有主鍵(MyISAM可以沒有),如果沒有顯式指定,則MySQL系統(tǒng)會自動選擇一個可以唯一標識數(shù)據記錄的列作為主鍵,如果不存在這種列,則MySQL自動為InnoDB表生成一個隱含字段作為主鍵,這個字段長度為6個字節(jié),類型為長整形。

第二個與MyISAM索引的不同是InnoDB的輔助索引data域存儲相應記錄主鍵的值而不是地址。換句話說,InnoDB的所有輔助索引都引用主鍵作為data域。例如,下圖為定義在Col3上的一個輔助索引:

MyISAM與InnoDB索引實現(xiàn)的對比分析

這里以英文字符的ASCII碼作為比較準則。聚集索引這種實現(xiàn)方式使得按主鍵的搜索十分高效,但是輔助索引搜索需要檢索兩遍索引:首先檢索輔助索引獲得主鍵,然后用主鍵到主索引中檢索獲得記錄。

總結

在數(shù)據庫開發(fā)中,了解不同存儲引擎的索引實現(xiàn)方式對于正確使用和優(yōu)化索引都非常有幫助。例如,知道了InnoDB的索引實現(xiàn)后,就很容易明白為什么不建議使用過長的字段作為主鍵,因為所有輔助索引都引用主索引,過長的主索引會令輔助索引變得過大。再例如,用非單調的字段作為主鍵在InnoDB中不是個好做法,因為InnoDB數(shù)據文件本身是一顆B+Tree,非單調的主鍵會造成在插入新記錄時數(shù)據文件為了維持B+Tree的特性而頻繁的分裂調整,十分低效,而使用自增字段作為主鍵則是一個很好的選擇。

以上是“MyISAM與InnoDB索引實現(xiàn)的對比分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


分享題目:MyISAM與InnoDB索引實現(xiàn)的對比分析
網站URL:http://weahome.cn/article/gcooeo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部