MySQL存儲引擎總結


在數據庫中存的就是一張張有着千絲萬縷關系的表,所以表設計的好壞,將直接影響整個數據庫。而在設計表的時候,我們都會關注一個問題,使用什么存儲引擎。

 

什么是存儲引擎?

 

關系數據庫是用於存儲和組織信息的數據結構,可以將表理解為由行和列組成的表格,類似於excel的電子表格的形式。有的表簡單,有的表復雜,有的表根本不用來存儲任何長期的數據,有的表讀取時非常快,但是插入數據時卻很差。而我們在實際開發過程中,就可能需要各種的表,不同的表,就意味着存儲不同類型的數據,數據處理上也會存在着差異。對於mysql來說,它提供了很多類型的存儲引擎,我們可以根據數據處理的需求,選擇不同的存儲引擎,從而最大限度的利用Mysql強大的功能。

特點

Myisam

BDB

Memory

InnoDB

Archive

存儲限制

沒有

沒有

64TB

沒有

事務安全

 

支持

 

支持

 

鎖機制

表鎖

頁鎖

表鎖

行鎖

行鎖

B樹索引

支持

支持

支持

支持

 

哈希索引

 

 

支持

支持

 

全文索引

支持

 

 

 

 

集群索引

 

 

 

支持

 

數據緩存

 

 

支持

支持

 

索引緩存

支持

 

支持

支持

 

數據可壓縮

支持

 

 

 

支持

空間使用

N/A

非常低

內存使用

中等

批量插入的速度

非常高

支持外鍵

 

 

 

支持

 

 

 

在mysql客戶端中,使用以下命令可以查看Mysql支持的引擎。

SHOW ENGINES ;

 

MyISAM:當我們建立一個MyISAM引擎的表時,就會在本地磁盤上建立三個文件,文件名就是表名。例如,我建立一個MyISAM引擎的tb_Demo表,那么就會生成以下三個文件:

1、tb_Demo.frm,存儲表定義

2、tb_Demo.MYD,存儲數據

3、Tb_Demo.MYI,存儲索引

 

MyISAM表無法處理事務,這就意味着有事務處理需求的表,不能使用MyISAM存儲引擎。

 

MyISAM存儲引擎特別適合在以下幾種情況下使用:

1、選擇密集型的表:MyIASM存儲引擎在篩選大量數據時非常迅速,這是它最突出的有點。

2、插入密集型的表:MyISAM的並發插入特性允許同時選擇和插入數據。例如:MyISAM存儲引擎很適合管理右鍵或web服務器日志數據。

 

InnoDB是一個健壯的事務型存儲引擎,這種存儲引擎已經被很多互聯網公司使用,為用戶操作非常大的數據提供了一個強大的解決方案。我的電腦上安裝的MySQL5.6.17版,InnoDB就是作為默認的存儲引擎。InnoDB還引入了行級鎖定和外鍵約束,在以下場合下,使用InnoDB是最理想的選擇:

1、更新密集型的表:InnoDB存儲引擎特別適合處理多重並發的更新請求

2、事務:InnoDB存儲引擎是支持事務的標准MySQL存儲引擎

3、自動災難恢復:與其他存儲引擎不同,InnoDB表能夠自動從災難中恢復

4、外鍵約束:MySQL支持外鍵的存儲引擎只有InnoDB

5、支持自動更加列AUTO_INCREMENT屬性

 

一般來說,如果需要事務支持,丙炔有較高的並發讀取頻率,InnoDB是不錯的選擇。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM