特點(diǎn) | MyISAM | BDB | Memory | InnoDB |
---|---|---|---|---|
存儲(chǔ)限制 | 沒有 | 沒有 | 有 | 64TB |
事務(wù)安全 | 支持 | 支持 | ||
鎖機(jī)制 | 表鎖 | 頁(yè)鎖 | 表鎖 | 行鎖 |
B樹索引 | 支持 | 支持 | 支持 | 支持 |
哈希索引 | 支持 | 支持 | ||
全文索引 | 支持 | |||
集群索引 | 支持 | |||
數(shù)據(jù)緩存 | 支持 | 支持 | ||
索引緩存 | 支持 | 支持 | 支持 | |
數(shù)據(jù)可壓縮 | 支持 | |||
空間使用 | 低 | 低 | N/A | 高 |
內(nèi)存使用 | 低 | 低 | 中等 | 高 |
批量插入的速度 | 高 | 高 | 高 | 低 |
支持外鍵 | 支持 |
查看和配置存儲(chǔ)引擎的操作
1.用show engines; 命令可以顯示當(dāng)前數(shù)據(jù)庫(kù)支持的存儲(chǔ)引擎情況;
2.要查看表的定義結(jié)構(gòu)等信息可以使用以下幾種命令:
Desc[ribe] tablename; //查看數(shù)據(jù)表的結(jié)構(gòu) Show create table tablename; //顯示表的創(chuàng)建語句,可以查看創(chuàng)建表時(shí)指定的ENGINE show table status like ‘tablename'\G顯示表的當(dāng)前狀態(tài)值
3.設(shè)置或修改表的存儲(chǔ)引擎
創(chuàng)建數(shù)據(jù)庫(kù)表時(shí)設(shè)置存儲(chǔ)存儲(chǔ)引擎的基本語法是:
Create table tableName( columnName(列名1) type(數(shù)據(jù)類型) attri(屬性設(shè)置), columnName(列名2) type(數(shù)據(jù)類型) attri(屬性設(shè)置), ……..) engine = engineName
修改存儲(chǔ)引擎,可以用命令
Alter table tableName engine =engineName
對(duì)于整個(gè)服務(wù)器或方案,你并不一定要使用相同的存儲(chǔ)引擎,可以為方案中的每個(gè)表使用不同的存儲(chǔ)引擎。
InnoDB的存儲(chǔ)結(jié)構(gòu)
InnoDB使用頁(yè)面存儲(chǔ)結(jié)構(gòu),下面是InnoDB的表空間結(jié)構(gòu)圖:
Page頁(yè)面存儲(chǔ)格式如下圖所示:
一個(gè)頁(yè)面的存儲(chǔ)由以下幾部分組成:
頁(yè)面中的頁(yè)頭,最大/最小虛記錄以及頁(yè)尾都是頁(yè)面中有固定的存儲(chǔ)位置。
InnoDB的索引結(jié)構(gòu)
InnoDB使用B+Tree的方式存儲(chǔ)索引。
Innodb的一個(gè)表可能包含多個(gè)索引,每個(gè)索引都使用B+樹來存儲(chǔ)。而索引包括聚集索引和二級(jí)索引,聚集索引使用表的主鍵作為索引鍵,包含表的所有字段。二級(jí)索引只包含索引鍵和聚集索引鍵(主鍵)的內(nèi)容,不包括其他字段。每一個(gè)索引都是一棵B+樹,每棵B+樹由很多頁(yè)面組成,而每個(gè)頁(yè)面大小一般為16K。從B+樹的組織結(jié)構(gòu)來看,B樹的頁(yè)面可分為:
葉子節(jié)點(diǎn):B樹層次為0的頁(yè)面,存儲(chǔ)記錄的所有內(nèi)容。
非葉子節(jié)點(diǎn):B樹層次大于0的頁(yè)面,只存儲(chǔ)索引鍵和頁(yè)面指針。
一棵典型的B+樹結(jié)構(gòu):
從上圖可知,相同層次的頁(yè)面是用一個(gè)雙向鏈表連接起來的。
一般情況下,從B+樹的最左邊葉子節(jié)點(diǎn)開始,一直向右掃描,就可以得到B+樹的從小到大的所有數(shù)據(jù)。因此,對(duì)于葉子節(jié)點(diǎn),有如下特征:
頁(yè)內(nèi)數(shù)據(jù)是按索引鍵排序的。
頁(yè)面的任一記錄的索引鍵值不小于其左兄弟頁(yè)面的任何記錄。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
標(biāo)簽:安徽 甘南 葫蘆島 拉薩 洛陽 吐魯番 嘉峪關(guān)
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Mysql InnoDB引擎的索引與存儲(chǔ)結(jié)構(gòu)詳解》,本文關(guān)鍵詞 Mysql,InnoDB,引擎,的,索引,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。