聊一聊MySQL的存儲引擎
什么是存儲引擎
存儲引擎是MySQL的一個組件,它能用來處理創(chuàng)建、讀取、更新的SQL操作。
存儲引擎類型
MySQL存儲引擎可以劃分以下兩種兩種類型:
1.事務(wù)形存儲引擎
2.非事務(wù)形存儲引擎
通過show egines可以查看數(shù)據(jù)庫支持的存儲引擎

InnoDB引擎
MySQL5.5以及更高版本的默認存儲引擎,支持事務(wù)。
InnoDB的索引
1.B+樹索引
樹形結(jié)構(gòu),數(shù)據(jù)存儲到葉子節(jié)點上,非葉子節(jié)點存儲索引值。
2.hash索引
數(shù)據(jù)檢索時,通過一次hash算法就能快速定位到值,適合等值查詢,不適合范圍查詢
3.全文索引
將存儲在數(shù)據(jù)庫中的文章任意內(nèi)容檢索出來的技術(shù)
InnoDB的鎖
InnoDB支持行級鎖與表級鎖,默認使用行級鎖,行級鎖要有索引才能實現(xiàn),如果沒有索引,查詢時會鎖住整個數(shù)據(jù)表。
共享鎖(讀鎖)
當事務(wù)A對數(shù)據(jù)行加上讀鎖時,其他事務(wù)仍能對該數(shù)據(jù)行進行讀取,但是不能進行寫操作,但是允許加讀鎖。

排它鎖(寫鎖)
當事務(wù)A對數(shù)據(jù)加上寫鎖時,其他事務(wù)仍能對該數(shù)據(jù)進行讀取,但是不能加任何其他鎖。

MyIsAM引擎
MySQL5.5以前的默認引擎,索引文件(MYI)與數(shù)據(jù)文件(MYD)分開存儲。加鎖時,會鎖住整個數(shù)據(jù)表。
由于InnoDB越來越強大,現(xiàn)已停止維護。
CSV引擎
1.以 csv 格式進行物理存儲
2.所有列都不能為 null 的
3.不支持索引
4.因為csv格式存儲,所以可以用WPS軟件直接進行數(shù)據(jù)編輯
Memory引擎
表結(jié)構(gòu)存儲在磁盤,表數(shù)據(jù)存儲在內(nèi)存中。默認使用Hash索引同時支持Btree索引,注意因為數(shù)據(jù)存在內(nèi)存中,所以關(guān)機或者重啟后數(shù)據(jù)會丟失。而且不能建太大的表,不如redis好用。
Archive存儲
只支持insert和select操作,只允許在自增ID上加索引,適用于日志和數(shù)據(jù)采集應(yīng)用。