亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MyISAM與InnoDB索引實現(xiàn)對比詳解

 更新時間:2020年09月29日 08:49:32   作者:奔跑的小河  
這篇文章主要給大家介紹了關(guān)于MyISAM與InnoDB索引實現(xiàn)對比的相關(guān)資料,文中通過圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

MyISAM索引實現(xiàn)

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

MyISAM主鍵索引

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

MyISAM輔助索引

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

InnoDB索引實現(xiàn)

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

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

InnoDB主索引

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

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

InnoDB輔助索引

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

總結(jié)

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

到此這篇關(guān)于MyISAM與InnoDB索引實現(xiàn)對比的文章就介紹到這了,更多相關(guān)MyISAM與InnoDB索引對比內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SQL行轉(zhuǎn)列、列轉(zhuǎn)行的簡單實現(xiàn)

    SQL行轉(zhuǎn)列、列轉(zhuǎn)行的簡單實現(xiàn)

    這篇文章主要給大家介紹了關(guān)于SQL行轉(zhuǎn)列、列轉(zhuǎn)行的簡單實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用SQL具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 如何查看Navicat加密的數(shù)據(jù)庫密碼

    如何查看Navicat加密的數(shù)據(jù)庫密碼

    本機裝的MySQL數(shù)據(jù)庫密碼忘記了,打開了Navicat連接過數(shù)據(jù)庫,不過密碼是加密的,怎么辦呢?今天小編給大家分享如何查看Navicat加密的數(shù)據(jù)庫密碼,感興趣的朋友一起看看吧
    2023-04-04
  • 數(shù)據(jù)庫的設(shè)計方法、規(guī)范與技巧

    數(shù)據(jù)庫的設(shè)計方法、規(guī)范與技巧

    數(shù)據(jù)庫的設(shè)計方法、規(guī)范與技巧...
    2007-03-03
  • 數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)詳解之三級模式結(jié)構(gòu)

    數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)詳解之三級模式結(jié)構(gòu)

    這篇文章主要為大家介紹了數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu),文中通過圖文的方式詳細的解析了數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)的三級模式結(jié)構(gòu),有需要的朋友可以借鑒參考下
    2021-09-09
  • victoriaMetrics代理性能優(yōu)化問題解析

    victoriaMetrics代理性能優(yōu)化問題解析

    這篇文章主要為大家介紹了victoriaMetrics代理性能優(yōu)化問題的解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-04-04
  • hadoop map-reduce中的文件并發(fā)操作

    hadoop map-reduce中的文件并發(fā)操作

    hadoop mapreduce最主要的應(yīng)用是基于鍵值對的數(shù)據(jù)的運算,過濾,提取。但除此之外,我們可以順帶利用mapreduce高并發(fā)的特性做一些用常用方法難以處理的問題,比如大量數(shù)據(jù),大量文件的并發(fā)讀寫
    2014-04-04
  • Mac系統(tǒng)Navicat的安裝與使用教程

    Mac系統(tǒng)Navicat的安裝與使用教程

    這篇文章主要介紹了Mac系統(tǒng)Navicat的破解安裝與使用教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Maven nexus 安裝nexus私服出現(xiàn)的問題和解決辦法

    Maven nexus 安裝nexus私服出現(xiàn)的問題和解決辦法

    本文主要介紹安裝nexus私服的時候出現(xiàn)問題的解決辦法,這里整理了兩種問題并詳細說明了解決辦法,有需要的朋友可以參考下
    2016-08-08
  • hive內(nèi)部表和外部表的區(qū)別詳解

    hive內(nèi)部表和外部表的區(qū)別詳解

    Hive內(nèi)部表:默認創(chuàng)建的表是內(nèi)部表,Hive外部表:外部表的數(shù)據(jù)不是Hive擁有或者管理的,只管理元數(shù)據(jù)的聲明周期,本文詳細介紹了hive內(nèi)部表和外部表的區(qū)別,感興趣的小伙伴可以參考閱讀
    2023-04-04
  • 解決navicat遠程連接mysql報錯10038的問題

    解決navicat遠程連接mysql報錯10038的問題

    這篇文章主要介紹了解決navicat遠程連接mysql報錯10038的問題,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11

最新評論