1.1 存儲(chǔ)引擎的介紹

1.1.1 文件系統(tǒng)存儲(chǔ)
文件系統(tǒng):操作系統(tǒng)組織和存取數(shù)據(jù)的一種機(jī)制。文件系統(tǒng)是一種軟件。
類型:ext2 3 4 ,xfs 數(shù)據(jù)。 不管使用什么文件系統(tǒng),數(shù)據(jù)內(nèi)容不會(huì)變化,不同的是,存儲(chǔ)空間、大小、速度。
1.1.2 mysql數(shù)據(jù)庫(kù)存儲(chǔ)
MySQL引擎: 可以理解為,MySQL的“文件系統(tǒng)”,只不過功能更加強(qiáng)大。
MySQL引擎功能: 除了可以提供基本的存取功能,還有更多功能事務(wù)功能、鎖定、備份和恢復(fù)、優(yōu)化以及特殊功能。
1.1.3 MySQL存儲(chǔ)引擎種類
MySQL 提供以下存儲(chǔ)引擎:
| InnoDB、MyISAM (最常用的兩種)MEMORY、ARCHIVE、FEDERATED、EXAMPLEBLACKHOLE、MERGE、NDBCLUSTER、CSV |
除此之外還可以使用第三方存儲(chǔ)引擎。
1.1.4 innodb與myisam對(duì)比
InnoDb引擎
支持ACID的事務(wù),支持事務(wù)的四種隔離級(jí)別;
支持行級(jí)鎖及外鍵約束:因此可以支持寫并發(fā);
不存儲(chǔ)總行數(shù);
一個(gè)InnoDb引擎存儲(chǔ)在一個(gè)文件空間(共享表空間,表大小不受操作系統(tǒng)控制,一個(gè)表可能分布在多個(gè)文件里),也有可能為多個(gè)(設(shè)置為獨(dú)立表空,表大小受操作系統(tǒng)文件大小限制,一般為2G),受操作系統(tǒng)文件大小的限制;
主鍵索引采用聚集索引(索引的數(shù)據(jù)域存儲(chǔ)數(shù)據(jù)文件本身),輔索引的數(shù)據(jù)域存儲(chǔ)主鍵的值;因此從輔索引查找數(shù)據(jù),需要先通過輔索引找到主鍵值,再訪問輔索引;最好使用自增主鍵,防止插入數(shù)據(jù)時(shí),為維持B+樹結(jié)構(gòu),文件的大調(diào)整。
Innodb的主索引結(jié)構(gòu)如下:

MyISAM引擎
不支持事務(wù),但是每次查詢都是原子的;
支持表級(jí)鎖,即每次操作是對(duì)整個(gè)表加鎖;
存儲(chǔ)表的總行數(shù);
一個(gè)MYISAM表有三個(gè)文件:索引文件、表結(jié)構(gòu)文件、數(shù)據(jù)文件;
采用菲聚集索引,索引文件的數(shù)據(jù)域存儲(chǔ)指向數(shù)據(jù)文件的指針。輔索引與主索引基本一致,但是輔索引不用保證唯一性。
MYISAM的主索引結(jié)構(gòu)如下:

兩種索引數(shù)據(jù)查找過程如下:

1.2 innodb存儲(chǔ)引擎
在MySQL5.5版本之后,默認(rèn)的存儲(chǔ)引擎,提供高可靠性和高性能。
1.2.1 Innodb引擎的優(yōu)點(diǎn)