Mysql資料庫優化之儲存引擎介紹

2021-09-13 19:22:27 字數 1314 閱讀 6114

myisam儲存引擎

innodb儲存引擎

memory儲存引擎

merge儲存引擎

指定儲存引擎的指令碼:在建立表的指令碼的結束前加engine=innodb

myisam儲存引擎不支援事務,也不支援外來鍵。但是它的優勢是訪問速度快,對事務完整性沒有要求或者以select 、insert為主的應用基本上可以用這個引擎來建立表。支援三種不同的儲存結構:靜態表、動態表、壓縮表。

靜態表:表中的字段都是非變長的字段,這樣每個記錄都是固定長度,優點是儲存非常迅速,容易快取,出現故障容易恢復;缺點是占用的空間通常比動態表多(因為儲存時會按照列的寬度定義補足空格),另外在取資料的時候,預設把字段後面的空格去掉,如果不注意會把資料本身帶的空格也忽略。

動態表:優點是記錄不是固定長度,這樣儲存占用的空間相對比較少;缺點是頻繁的更新、刪除資料容易產生碎片,需要定期執行optimize table 或者myisamchk -r命令來改善效能。

壓縮表:因為每個記錄是被單獨壓縮的,所以只用非常小訪問開支。

innodb儲存引擎提供了提交、回滾、崩潰恢復能力的事務安全。但是對比myisam引擎,寫的處理效率會差一些,並且會占用更多的磁碟空間以保留資料和索引。 支援自動增長列,和外來鍵約束。

memory儲存引擎使用存在於記憶體中的內容來建立表。每個memory只實際對應乙個磁碟檔案,格式是.frm。memory型別的表訪問非常快,因為它的資料放在記憶體中,並且預設使用hash索引,但是一旦服務關閉,表中的資料就會丟失掉。

memory儲存引擎的表可以選擇使用btree和hash索引,兩種不同的索引使用範圍不同。

hash索引:

優點:hash索引結構的特殊性,其檢索效率非常高,索引的檢索可以一次定位,不像b-tree索引需要從跟節點到枝節點,最後才能訪問到葉節點,這樣多次的io訪問,所以hash索引的執行效率要遠高於b-tree索引。

缺點:hash索引是使用hash演算法,hash演算法只支援等值計算,對於非精確查詢的情況,比如like等範圍查詢hash索引失效,不支援。

memory型別的儲存引擎主要用於對於不頻繁變化內容的表,或者作為統計操作的中間結果表,便於高效地對中間結果進行分析並得到最終的統計結果。對儲存引擎memory的表進行更新操作要謹慎,因為資料並沒有實際寫入到磁碟中,所以一定要對下次重新啟動服務後如何獲得修改後的資料有所考慮。

merge儲存引擎是一組myisam表的組合,這些myisam表的結構必須完全相同,merge表本身並沒有資料,對merge型別的表操作進行查詢、更新、刪除操作,這些操作實際上是對內部的myisam表進行的。

MySQL資料庫效能優化之儲存引擎選擇

hosted on dreamhost 可以通過我的折扣碼imysqler獲得優惠折扣 這是mysql資料庫效能優化專題系列的第五篇文章 mysql資料庫效能優化之儲存引擎選擇 mysql 的儲存引擎可能是所有關係型資料庫產品中最具有特色的了,不僅可以同時使用多種儲存引擎,而且每種儲存引擎和mysq...

MySQL資料庫效能優化之儲存引擎選擇

mysql 的儲存引擎可能是所有關係型資料庫產品中最具有特色的了,不僅可以同時使用多種儲存引擎,而且每種儲存引擎和mysql之間使用外掛程式方式這種非常松的耦合關係。由於各儲存引擎功能特性差異較大,這篇文章主要是介紹如何來選擇合適的儲存引擎來應對不同的業務場景。innodb ndbcluster 注...

MySQL資料庫效能優化之儲存引擎選擇

這是mysql資料庫效能優化專題系列的第五篇文章 mysql資料庫效能優化之儲存引擎選擇 mysql 的儲存引擎可能是所有關係型資料庫產品中最具有特色的了,不僅可以同時使用多種儲存引擎,而且每種儲存引擎和mysql之間使用外掛程式方式這種非常松的耦合關係。由於各儲存引擎功能特性差異較大,這篇文章主要...