MySQL儲存引擎簡介

2021-12-30 13:04:30 字數 2212 閱讀 9833

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一樣:(.frm 檔案)來存放表結構定義相關的元資料。

跟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儲存引擎簡介

精品推薦 什麼是儲存引擎 mysql儲存引擎是資料庫如何儲存資料 怎樣建立索引以及如何查詢更新資料等技術的實現方法,資料通過使用不同的技術儲存在檔案中,使用不同的儲存機制 索引方式來提供不同的功能。在mysql這種關係型資料中心來說,資料是以表的方式來儲存的,因此,簡單點來說,儲存引擎就是儲存和操作...

MySQL 儲存引擎簡介

今天寫sql的時候偶然間看到示例在建立表的sql語句加了一段 engine myisam 一時好奇想看下這個 myisam 是什麼意思,於是在網上搜出了官方文件 mysql 5.1 參考手冊 中對mysql儲存引擎的簡介,摘抄如下 myisam 預設的mysql外掛程式式儲存引擎,它是在web 資料...

MySQL 儲存引擎簡介

今天寫sql的時候偶然間看到示例在建立表的sql語句加了一段 engine myisam 一時好奇想看下這個 myisam 是什麼意思,於是在網上搜出了官方文件 mysql 5.1 參考手冊 中對mysql儲存引擎的簡介,摘抄如下 myisam 預設的mysql外掛程式式儲存引擎,它是在web 資料...