MySQL常用儲存引擎介紹

2021-10-05 05:42:26 字數 1996 閱讀 6549

目錄

比較myisam和innodb儲存引擎

myisam儲存引擎

innodb儲存引擎

阿里巴巴使用的儲存引擎

memory儲存引擎(了解)

merge儲存引擎(了解)

mysql5.5以後預設引擎為innodb

innodb和myisam儲存位置檔案比較

mysql資料表以檔案的形式儲存在磁碟中(\mysql安裝目錄\data\***),包括表檔案、資料檔案、資料庫選項檔案。

myisam引擎有三個檔案:myisam.frm、myisam.myd、myisam.myi

innodb引擎只有乙個*.frm檔案,以及上一級目錄中的ibdata1檔案

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

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

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

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

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

阿里使用mysql的percona版本,後續阿里自研的mysql也是基於percona進行的改進,在功能和效能上均較mysql有顯著提公升。該版本提公升了高負載情況下的innodb效能,為dba提供了一些非常有用的診斷工具,另外還有更多的引數和命令來控**務器行為。

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

memory 儲存引擎的表可以選擇使用 btree 索引或者 hash 索引,兩種不同型別的索引有其不同的使用範圍

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

那麼不精確查詢呢,也很明顯,因為 hash 演算法是基於等值計算的,所以對於「like」等範圍查詢 hash 索引無效,不支援;memory 型別的儲存引擎主要用於哪些內容變化不頻繁的**表,或者作為統計操作的中間結果表,便於高效地對中間結果進行分析並得到最終的統計結果,。對儲存引擎為 memory 的表進行更新操作要謹慎,因為資料並沒有實際寫入到磁碟中,所以一定要對下次重新啟動服務後如何獲得這些修改後的資料有所考慮。 

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

mysql儲存引擎介紹 MySQL儲存引擎簡單介紹

mysql使用的是外掛程式式儲存引擎。主要包含儲存引擎有 myisam。innodb,ndb cluster,maria。falcon,memory,archive,merge。federated。當中最為廣泛的是myisam 和innodb兩種儲存引擎,所以接下來對它們做簡介。myisam 儲存引...

mysql儲存引擎介紹 MySQL儲存引擎介紹

toc innodb儲存引擎 其特點十行鎖設計 支援危機,並支援型別與oracle的非鎖定讀,即預設讀取操作不會產生鎖。innodb通過使用多版本併發控制 mvcc 來獲取高併發性,並且實現了sql標準的4種隔離,預設為repeatable級別。同時使用一種被稱為next keylocking的策略...

MySQL儲存引擎介紹

1.mysql儲存引擎對比 如上圖所示,為幾種常見的儲存引擎的對比,當然還有像csv儲存引擎 不支援索引 和blackhole黑洞引擎 寫入的資料都會消失,一般用作資料複製的中繼 等,但myisam和innodb引擎是最常見的,myisam適用於事務的處理不多的情況,innodb適用於事務處理比較多...