1. 程式人生 > >簡述mysql的儲存引擎,myisam和innodb的區別

簡述mysql的儲存引擎,myisam和innodb的區別

mysql儲存引擎

MySQL的儲存引擎是MySQL體系架構中的重要組成部分,

也是MySQL體系結構的核心,外掛式的儲存引擎更是它區別於其它資料庫的重要特徵。

它處於MySQL體系架構中Server端底層,是底層物理結構的實現,用於將資料以各種不同的技術方式儲存到檔案或者記憶體中,

不同的儲存引擎具備不同的儲存機制、索引技巧和鎖定水平。常見的MySQL儲存引擎有InnoDB、MyISAM、Memory、Archive等等,

它們具備各自的特徵,我們可以根據不同的具體應用來建立對應的儲存引擎表。

 

myisam和innodb的區別

MyISAM:

  1. 不支援事務,但是每次查詢都是原子的;
  2. 支援表級鎖,即每次操作是對整個表加鎖;
  3. 儲存表的總行數;
  4. 一個MYISAM表有三個檔案:索引檔案、表結構檔案、資料檔案;
  5. 採用菲聚集索引,索引檔案的資料域儲存指向資料檔案的指標。輔索引與主索引基本一致,但是輔索引不用保證唯一性。

InnoDb:

  1. 支援ACID的事務,支援事務的四種隔離級別;
  2. 支援行級鎖及外來鍵約束:因此可以支援寫併發;
  3. 不儲存總行數;
  4. 一個InnoDb引擎儲存在一個檔案空間(共享表空間,表大小不受作業系統控制,一個表可能分佈在多個檔案裡),也有可能為多個(設定為獨立表空,表大小受作業系統檔案大小限制,一般為2G),受作業系統檔案大小的限制;
  5. 主鍵索引採用聚集索引(索引的資料域儲存資料檔案本身),輔索引的資料域儲存主鍵的值;因此從輔索引查詢資料,需要先通過輔索引找到主鍵值,再訪問輔索引;最好使用自增主鍵,防止插入資料時,為維持B+樹結構,檔案的大調整。