欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mysql中的聚簇索引cluster index解析

 更新時(shí)間:2023年10月13日 08:46:14   作者:青島老甜沫  
這篇文章主要介紹了Mysql中的聚簇索引cluster index解析,聚簇索引是一種數(shù)據(jù)庫索引的類型,它將數(shù)據(jù)行物理上存儲在磁盤上按照索引的順序進(jìn)行排序,聚簇索引可以提高查詢性能,因?yàn)樗梢詼p少磁盤I/O操作,需要的朋友可以參考下

聚簇索引(cluster index)

一個表只能有一個聚簇索引。

目前,只有solidDB和InnoDB支持聚簇索引,MyISAM不支持聚簇索引。一些DBMS允許用戶指定聚簇索引,但是MySQL的存儲引擎到目前為止都不支持。

InnoDB的聚簇索引:

  • InnoDB對主鍵建立聚簇索引。
  • 如果你不指定主鍵,InnoDB會用一個具有唯一且非空值的索引來代替。
  • 如果不存在這樣的索引,InnoDB會定義一個隱藏的主鍵,然后對其建立聚簇索引

InnoDB默認(rèn)使用聚簇索引來組織數(shù)據(jù),如果你用InnoDB,而且不需要特殊的聚簇索引,一個好的做法就是使用代理主鍵(surrogate key)—獨(dú)立于你的應(yīng)用中的數(shù)據(jù)。最簡單的做法就是使用一個AUTO_INCREMENT的列,這會保證記錄按照順序插入,而且能提高使用primary_key進(jìn)行連接的查詢的性能。應(yīng)該盡量避免隨機(jī)的聚簇主鍵,例如字符串主鍵就是一個不好的選擇,它使得插入操作變得隨機(jī)

變得隨機(jī)的不好的地方

聚簇索引保證關(guān)鍵字的值相近的元祖存儲的物理位置也相近(所以字符串類型不宜簡歷聚簇索引,特別是隨機(jī)字符串,會使系統(tǒng)進(jìn)行大量的移動操作)

一般來說,DBMS都會以聚簇索引的形式來存儲實(shí)際的數(shù)據(jù),它是其他二級索引的基本:

  • 聚簇索引(primary索引):主鍵索引
  • 非聚簇索引(second索引):二級索引 聚簇索引的結(jié)構(gòu):

聚簇索引的結(jié)構(gòu):

節(jié)點(diǎn)頁只包含了索引列,葉子頁包含了行的全部數(shù)據(jù)。聚簇索引“就是表”,因此可以不需要獨(dú)立的行存儲

二級索引:葉子節(jié)點(diǎn)保存的不是指行的物理位置的指針,而是行的主鍵值 。

這意味著通過二級索引查找行,存儲引擎需要:

  1. 找到二級索引的葉子節(jié)點(diǎn)獲得對應(yīng)的主鍵值
  2. 根據(jù)這個主鍵值去聚簇索引中查找對應(yīng)的行。這里需要兩次B-Tree查找而不是一次。

覆蓋索引對于InnoDB表尤其有用,因?yàn)镮nnoDB使用聚簇索引組著數(shù)據(jù),如果二級索引中包含查詢所需的數(shù)據(jù),就不再需要在聚集索引中查找了。

聚簇索引(InnoDB)和二級索引(MyISAM)

數(shù)據(jù)布局比較:

CREATE TABLE layout_test (
  col1 int NOT NULL,
  col2 int NOT NULL,
  PRIMARY KEY(col1),
  KEY(col2)
);

MyISAM

MyISAM按照插入的順序在磁盤上存儲數(shù)據(jù):

左邊為行號(row number),從0開始。因?yàn)樵M的大小固定,所以MyISAM可以很容易的從表的開始位置找到某一字節(jié)的位置。

MyISAM建立的索引結(jié)構(gòu)大致如下:

cod1主鍵索引:

MyISAM不支持聚簇索引,索引中每一個葉子節(jié)點(diǎn)僅僅包含行號(row number),且葉子節(jié)點(diǎn)按照col1的順序存儲。

col2非主鍵索引:

在MyISAM中,primary key和其他索引沒有什么區(qū)別。Primary key僅僅只是一個叫做PRIMARY的唯一,非空的索引而已,葉子節(jié)點(diǎn)按照col2的順序存儲。

InnoDB:

col1主鍵索引,即聚簇索引:

聚簇索引中的每個葉子節(jié)點(diǎn)包含主鍵的值,事務(wù)ID,用于事務(wù)和MVVC的回滾指針、余下的列

col2非主鍵索引,及二級索引

InnoDB的二級索引的葉子包含主鍵的值,而不是行指針(row pointers),這樣的策略減小了移動數(shù)據(jù)或者數(shù)據(jù)頁面分裂時(shí)維護(hù)二級索引的開銷,因?yàn)镮nnoDB不需要更新索引的行指針。

到此這篇關(guān)于Mysql中的聚簇索引cluster index解析的文章就介紹到這了,更多相關(guān)Mysql聚簇索引內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實(shí)現(xiàn)郵件發(fā)送QQ郵箱帶附件

    Java實(shí)現(xiàn)郵件發(fā)送QQ郵箱帶附件

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)郵件發(fā)送QQ郵箱帶附件功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • SpringBoot如何使用ApplicationContext獲取bean對象

    SpringBoot如何使用ApplicationContext獲取bean對象

    這篇文章主要介紹了SpringBoot 如何使用ApplicationContext獲取bean對象,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java讀取一行空格隔開的數(shù)字字符串并求出這些數(shù)字的和方法

    Java讀取一行空格隔開的數(shù)字字符串并求出這些數(shù)字的和方法

    今天小編就為大家分享一篇Java讀取一行空格隔開的數(shù)字字符串并求出這些數(shù)字的和方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Java本地緩存的實(shí)現(xiàn)代碼

    Java本地緩存的實(shí)現(xiàn)代碼

    本篇文章主要介紹了Java本地緩存的實(shí)現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Java?Spring?循環(huán)依賴解析

    Java?Spring?循環(huán)依賴解析

    這篇文章主要介紹了Java?Spring?循環(huán)依賴解析,Spring?現(xiàn)在其實(shí)是我們?Java?程序開發(fā)離不開的基礎(chǔ)框架,個人覺得除了?JDK?我們用得最多的?Java?中間件就是?Spring?,今天我們一起來學(xué)習(xí)一下?Spring?的循環(huán)依賴。下面詳細(xì)內(nèi)容需要的小伙伴可以參考一下
    2022-02-02
  • JavaFX程序初次運(yùn)行創(chuàng)建數(shù)據(jù)庫并執(zhí)行建表SQL詳解

    JavaFX程序初次運(yùn)行創(chuàng)建數(shù)據(jù)庫并執(zhí)行建表SQL詳解

    這篇文章主要介紹了JavaFX程序初次運(yùn)行創(chuàng)建數(shù)據(jù)庫并執(zhí)行建表SQL詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • SpringSecurity實(shí)現(xiàn)權(quán)限認(rèn)證與授權(quán)的使用示例

    SpringSecurity實(shí)現(xiàn)權(quán)限認(rèn)證與授權(quán)的使用示例

    本文主要介紹了SpringSecurity實(shí)現(xiàn)權(quán)限認(rèn)證與授權(quán)的使用示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • java中多線程的超詳細(xì)介紹

    java中多線程的超詳細(xì)介紹

    這篇文章主要給大家介紹了關(guān)于java中多線程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Java中的clone方法詳解_動力節(jié)點(diǎn)Java學(xué)院整理

    Java中的clone方法詳解_動力節(jié)點(diǎn)Java學(xué)院整理

    clone顧名思義就是復(fù)制, 在Java語言中, clone方法被對象調(diào)用,所以會復(fù)制對象。下面通過本文給大家介紹java中的clone方法,感興趣的朋友一起看看吧
    2017-06-06
  • 多模塊項(xiàng)目引入SpringSecurity后一直報(bào)404的解決方案

    多模塊項(xiàng)目引入SpringSecurity后一直報(bào)404的解決方案

    這篇文章主要介紹了多模塊項(xiàng)目引入SpringSecurity后一直報(bào)404的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論