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

2021-10-19 19:23:31 字數 2243 閱讀 4719

mysql使用的是外掛程式式儲存引擎。

主要包含儲存引擎有:myisam。innodb,ndb cluster,maria。falcon,memory,archive,merge。federated。

當中最為廣泛的是myisam 和innodb兩種儲存引擎,所以接下來對它們做簡介。

myisam 儲存引擎簡單介紹

myisam 儲存引擎的表儲存在資料庫中,每個表都被存放為三個以表名命名的物理檔案。

1、(.frm檔案)不論什麼儲存引擎都必不可少的存放表結構定義資訊的檔案

2、(.myd檔案)存放表資料的檔案

3、(.myi檔案)存放該錶全部索引資料的檔案

注:有且僅有這樣三個檔案做為myisam 儲存型別的表的儲存

myisam 的表以不同的格式存放在乙個同樣字尾名的.myd 檔案裡。

當中格式分為:靜態(fixed)固定長度、動態(dynamic)可變長度以及壓縮(compressed)三種格式。

壓縮:能夠建立表的時候通過row_format 來指定(預設不壓縮)

也能夠通過myisampack 工具來進行壓縮

非壓縮:

動態:僅僅要表中有可變長度型別的字段存在,那麼該錶就肯定是dynamic 格式的

靜態:假設沒有不論什麼可變長度的字段,則為fixed 格式

myisam 支援下面三種型別的索引:

1、b-tree 索引

b-tree 索引,全部的索引節點都依照balance tree 的資料結構來儲存,全部的索引資料節點都在葉節點。

2、r-tree 索引

r-tree 索引的儲存方式和b-tree 索引有一些差別。主要設計用於為儲存空間和多維資料的字段做索引。支援geometry 型別的字段作索引。

3、full-text 索引

full-text 索引就是我們長說的全文索引。他的儲存結構也是b-tree。主要是為了解決在我們須要用like 查詢的低效問題。

注:參與乙個索引的全部欄位的長度之和不能超過1000 位元組

innodb 儲存引擎簡單介紹

1、支援事務安裝

實現了sql92 標準所定義的全部四個級別(read uncommitted,read committed。repeatable read 和serializable)

2、資料多版本號讀取

innodb 在事務支援的同一時候。為了保證資料的一致性已經併發時候的效能,通過對undo資訊,實現了資料的多版本號讀取。

3、鎖定機制的改進

innodb 改變了myisam 的鎖機制,實現了行鎖。行鎖機制的實現是通過索引來完畢的。

4、實現外來鍵

建議不要使用外來鍵。資料庫系統調優專家都建議不要使用

5、innodb 的物理結構

跟myisam不一樣:表資料和索引資料是存放在一起的

innodb 的物理結構分為兩大部分:

1、資料檔案(表資料和索引資料)

存放資料表中的資料和全部的索引資料,包含主鍵和其它普通索引。

innodb 的表空間分為兩種形式:

一種是共享表空間,也就是全部表和索引資料被存放在同乙個表空間(乙個或多個資料檔案)中,

通過innodb_data_file_path 來指定,新增資料檔案須要停機重新啟動。

第二種是獨享表空間,也就是每乙個表的資料和索引被存放在乙個單獨的.ibd 檔案裡。

注:共享表空間是必須存在的。由於innodb 的undo 資訊和其它一些元資料資訊都是存放在共享表空間裡面的。

共享表空間的資料檔案是能夠設定為固定大小和可自己主動擴充套件大小兩種形式,

自己主動擴充套件形式的檔案能夠設定檔案的最大大小和每次擴充套件量。

2、日誌檔案

innodb 的日誌檔案和oracle 的redo 日誌比較類似:

能夠設定多個日誌組(最少2個),

採用輪循策略來順序的寫入,

甚至在老版本號中還有和oracle 一樣的日誌歸檔特性。

注:千萬別所有刪除innodb 的日誌檔案,由於非常可能就會讓你的資料庫crash,無法啟動。或者是丟失資料。

innodb 全然可以通過redo 日誌將資料庫crash 時刻已經完畢但還沒有來得及將資料寫入磁碟的事務恢復,也可以將全部

部分完畢並已經寫入磁碟的未完畢事務回滾並將資料還原。

innodb 的全部引數基本上都帶有字首「innodb_」。

能夠只通過引數(skip-innodb)來遮蔽mysql 中的innodb儲存引擎,

這樣即使我們在安裝編譯的時候將innodb 儲存引擎安裝進去了,使用者也無法建立innodb 的表。

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

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

MySQL儲存引擎介紹

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

MySQL 儲存引擎介紹

show engines 檢視可供選用的儲存引擎 注 mrg myisam和ndbcluster分別是merge 和 ndb的同義詞。注 memory儲存引擎會把表放在記憶體裡,而非磁碟上 預設情況下,innodb 引擎會把表的資料和索引儲存在它的系統表空間裡。innodb 儲存引擎 mysql 的...