天天看點

資料庫必知詞彙:MyISAM

MyISAM是MySQL 5.1版本之前的預設存儲引擎。MyISAM基于更老的ISAM (Indexed Sequential Access Method)代碼,但有很多有用的擴充。MyISAM不支援事務處理的,而且不支援外鍵,如果執行大量的Select,Insert操作,MyISAM比較适合。

在存儲結構方面,每個MyISAM在磁盤上存儲成三個檔案,第一個檔案的名字以表的名字開始,擴充名指出檔案類型。.frm檔案存儲表定義。資料檔案的擴充名為.MYD (MYData)。索引檔案的擴充名是.MYI (MYIndex)。

在存儲空間方面,MyISAM可被壓縮,存儲空間較小。支援三種不同的存儲格式:靜态表(預設,但是注意資料末尾不能有空格,會被去掉)、動态表、壓縮表。

在可移植性、備份及恢複方面,MyISAM的資料是以檔案的形式存儲,是以在跨平台的資料轉移中會很友善。在備份和恢複時可單獨針對某個表進行操作。

在事務支援方面,MyISAM強調的是性能,每次查詢具有原子性,其執行數度比InnoDB類型更快,但是不提供事務支援。

在AUTO_INCREMENT方面,MyISAM可以和其他字段一起建立聯合索引。引擎的自動增長列必須是索引,如果是組合索引,自動增長可以不是第一列,他可以根據前面幾列進行排序後遞增。

在表鎖差異方面,MyISAM隻支援表級鎖,使用者在操作MyISAM表時,select,update,delete,insert語句都會給表自動加鎖,如果加鎖以後的表滿足insert并發的情況下,可以在表的尾部插入新的資料。

除此之外,MyISAM支援FULLTEXT類型的全文索引;允許沒有任何索引和主鍵的表存在,索引都是儲存行的位址;儲存有表的總行數,如果執行語句select count(*) from table,會直接取出出該值;如果執行大量的SELECT,MyISAM是更好的選擇。但是MyISAM不支援外鍵。

資料來源:

列旭松, 陳文. PHP核心技術與最佳實踐[M]. 機械工業出版社, 2013.

MySQL存儲引擎--MyISAM與InnoDB差別

https://segmentfault.com/a/1190000008227211

MySQL存儲引擎MyISAM與InnoDB的主要差別對比

http://www.ha97.com/4197.html