1. 程式人生 > >MySql的兩種儲存引擎的區別

MySql的兩種儲存引擎的區別

MyISAM:

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

InnoDb:

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

MYISAM的主索引結構如下:

輔索引如下:

InnoDb的主索引如下:

輔索引如下:

兩種索引資料查詢過程如下: