MySQL常用存儲引擎


 

MyISAM:

  • MySQL默認數據庫引擎,不支持事務、外鍵,速度快,用於無事務要求或者select、insert為主的場景。
  • 會創建3個文件.frm(存儲表定義),.MYD(MYData,存儲數據),.MYI(MYIndex,存儲引擎)。
  • 支持3中存儲格式,靜態(固定長度)表,動態表,壓縮表。
    • 靜態表是默認格式,固定長度速度快,但是占空間大。記錄長度不夠時會用空格填充,讀取數據時會清除空格,存在吃尾部空格的情況。
    • 動態表包含變長字段,記錄不是固定長度,占用空間少,但是頻繁更新和刪除會產生隨便,需要定期整理,並且在出現故障時恢復比較困難。
    • 壓縮表由mysiampack工具創建,空間小。

InnoDB:

  • 提供了具有提交、回滾、崩潰恢復能力的事務安全,但是會占用更多空間用以保存數據和索引。
  • 支持外鍵,創建外鍵的時候,要求父表必須有對應的碎銀,子表在創建索引的時候也會自動創建對應的索引。
  • 存儲表和索引有兩種方式,
    • 使用共享表空間存儲,表結構保存在.frm文件中,數據和索引在innodb_data_home_dir和innodb_data_file_path定義的表空間中,可以是多個文件。
    • 使用多表空間存儲,表結構保存在.frm文件中,每個表的數據和索引單獨保存在.ibd中。

MEMORY:

  • 使用存在於內存中的內容來創建表,訪問速度快,默認使用HASH索引,服務關閉數據會丟失。
  • 用於內容變化不頻繁的代碼表,或者作為統計操作的中間結果表。

MERGE:

  • 一組MyISAM表的組合,這些表必須結構完全相同。
  • MERGE表本身沒有數據,CRUD時其實操作的是內部的MyISAM表。
  • Drop只是刪除MERGE的定義,對於內部表沒有影響。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM