MySQL MyISAM/InnoDB

MySQL常見的表類型(即存儲引擎)

show engines包 括:MyISAM/Innodb/Memory/Merge/NDB

其中,MyISAM和Innodb是最常用的兩個表類型,各有優勢,我們可以根據需求情況選擇適合自己的表類型。
[MyISAM]
1)每個數據庫存儲包括3個文件:.frm(表定義)、MYD(數據文件)、MYI(索引文件)
2)數據文件或索引文件可以指向多個磁盤
3)Linux的默認引擎,win默認InnoDB
4)面向非事務類型,避免事務型額外的開銷
5)適用於select、insert密集的表
6)MyISAM默認鎖的調度機制是寫優先,可以通過LOW_PRIORITY_UPDATES設置
7)MyISAM類型的數據文件可以在不同操作系統中COPY,這點很重要,佈署的時候方便點。

[Innodb]
1)用於事務應用程序
2)適用於update、delete密集的操作。

執行select count(*) from table時,InnoDB要掃描一遍整個表來計算有多少行,但是MyISAM只要簡單的讀出保存好的行數即可。

注意的是,當count(*)語句包含 where條件時,兩種表的操作是一樣的。

DELETE FROM table時,InnoDB不會重新建立表,而是一行一行的刪除。
3)引入行級鎖和外鍵的約束
4)InnoDB不支持FULLTEXT類型的索引

頁級:引擎 BDB。
表級:引擎 MyISAM , 理解爲鎖住整個表,可以同時讀,寫不行
行級:引擎 INNODB , 單獨的一行記錄加鎖

表級,直接鎖定整張表,在你鎖定期間,其它進程無法對該表進行寫操作。如果你是寫鎖,則其它進程則讀也不允許
行級,,僅對指定的記錄進行加鎖,這樣其它進程還是可以對同一個表中的其它記錄進行操作。
頁級,表級鎖速度快,但衝突多,行級衝突少,但速度慢。所以取了折衷的頁級,一次鎖定相鄰的一組記錄。

發佈了16 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章