天天看點

mysql資料庫的常用引擎



常用存儲引擎的适用環境:

  1. MyISAM:預設的MySQL插件式存儲引擎,它是在Web、資料倉儲和其他應用環境下最常使用的存儲引擎之一
  2. InnoDB:用于事務處理應用程式,具有衆多特性,包括ACID事務支援。
  3. Memory:将所有資料儲存在RAM中,在需要快速查找引用和其他類似資料的環境下,可提供極快的通路。
  4. Merge:允許MySQL DBA或開發人員将一系列等同的MyISAM表以邏輯方式組合在一起,并作為1個對象引用它們。對于諸如資料倉儲等VLDB環境十分适合。

Myisam

        Myisam是Mysql的預設存儲引擎。當create建立新表時,未指定新表的存儲引擎時,預設使用Myisam。每個MyISAM在磁盤上存儲成三個檔案。檔案名都和表名相同,擴充名分别是.frm(存儲表定義)、.MYD (MYData,存儲資料)、.MYI (MYIndex,存儲索引)。資料檔案和索引檔案可以放置在不同的目錄,平均分布io,獲得更快的速度。   

InnoDB

        InnoDB存儲引擎提供了具有送出、復原和崩潰恢複能力的事務安全。但是對比Myisam的存儲引擎,InnoDB寫的處理效率差一些并且會占用更多的磁盤空間以保留資料和索引。

一張表,裡面有ID自增主鍵,當insert了17條記錄之後,删除了第15,16,17條記錄,再把Mysql重新開機,再insert一條記錄,這條記錄的ID是18還是15 ? 

(1)如果表的類型是MyISAM,那麼是18。 

因為MyISAM表會把自增主鍵的最大ID記錄到資料檔案裡,重新開機MySQL自增主鍵的最大ID也不會丢失。 

(2)如果表的類型是InnoDB,那麼是15。 

InnoDB表隻是把自增主鍵的最大ID記錄到記憶體中,是以重新開機資料庫或者是對表進行OPTIMIZE操作,都會導緻最大ID丢失。

繼續閱讀