【mysql】MyISAM表的存儲格式
MyISAM支持三種不同的存儲格式:固定格式,動態格式,已壓縮格式(只能使用myisampack工具來創建)。
靜態表特征(固定格式)
靜態格式是MyISAM表的默認存儲格式。當表不包含變量長度列(VARCHAR, BLOB, 或TEXT)時,使用這個格式。每一行用固定字節數存儲。靜態格式是三種存儲格式中最簡單和最安全的,同時也是最快的ondisk格式。
基本特征:
(1)CHAR列對列寬度為空間填補。
(2)快速。
(3)容易緩存。
(4)由于每個記錄位置固定,崩潰后容易重建。(5)無必要重新組織,通常比動態表需要更大的磁盤空間。
動態表特征(動態格式)
如果一個MyISAM表包含任何可變長度 列(VARCHAR, BLOB或TEXTDynamic),或者如果一個表被用ROW_FORMAT=DYNAMIC選項來創建,動態存儲格式被使用。
基本特征:
(1)除了長度少于4的列之外,所有的字符串列存儲為動態。
(2)每個記錄前存儲一個位圖,該位圖表明哪一列包含空字符串(對于字符串列)或者0(對于數字列),但并不包括包含NULL值的列。而非空字符串列,則會被存為一個長度字節加字符串的內容。
(3)動態格式表在崩潰后要比靜態格式表更難重建,因為一個記錄可能被分為多個碎片且鏈接(碎片)可能被丟失。
(4)每個記錄僅使用必需大小的空間。盡管如此,如果一個記錄變大,它就按需要被分開成多片,造成記錄碎片的后果。比如,你用擴展行長度的信息更新一行,該行就變得有碎片。在這種情況下,你可以時不時運行OPTIMIZE TABLE或myisamchk -r來改善性能。可使用myisamchk -ei來獲取表的統計數據。
已壓縮表特征
MySQL分發版本里默認包含myisampack工具,已壓縮存儲格式是由它創建的只讀格式。
壓縮表有下列特征:
(1)壓縮表占據很小的磁盤空間,最小化了磁盤用量。
(2)每個記錄被單獨壓縮,訪問開支小。
(3)可以處理固定長度或動態長度記錄。
bitsCN.com聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com