資源描述:
《mysql之myisam存儲引擎》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、MyISAM存儲引擎每張表在磁盤上的存儲分為三個文件:存放元數(shù)據(jù)的.frm文件,存放表記錄數(shù)據(jù)的.MYD文件,存放索引數(shù)據(jù)的.MYI為索引文件。MyISAM的一些特點·只對索引進行緩存(KeyCache),數(shù)據(jù)文件使用操作系統(tǒng)cache,當(dāng)索引數(shù)據(jù)大于分配的keybuffer時也使用操作系統(tǒng)cache索引·單獨保存表的行數(shù),因此做count(*)時不需要全表掃描·不是事務(wù)安全的,不支持外鍵·表級鎖定·每張表一個數(shù)據(jù)文件,備份時可以直接復(fù)制,恢復(fù)時也可以直接覆蓋,操作方便·使用myisamchk進行故障恢復(fù)MyISAM啟動以下為啟動選項--m
2、yisam-recover-option=mode設(shè)置MyISAM表損壞后自動恢復(fù)的模式--delay-key-write=ALL不在MyISAM表寫操作之間刷新keycachekey_buffer_sizeKeycache的大小以下系統(tǒng)變量影響MyISAM表bulk_insert_buffer_size用于優(yōu)化批量插入操作的樹緩沖區(qū)大小myisam_max_sort_file_sizeMySQL在重建MyISAM索引時(REPAIRTABLE、ALTERTABLE、LOADDATAINFILE)可以使用的臨時文件最大容量。如果需要的文件大
3、小超過此值,索引會在keycache中創(chuàng)建,相比而言速度較慢myisam_sort_buffer_size設(shè)置用于表恢復(fù)的緩沖區(qū)大小MyISAM表的存儲格式MyISAM支持三種不同的存儲格式:靜態(tài)固定長度、動態(tài)可變長度和壓縮格式。前兩者根據(jù)列的數(shù)據(jù)類型自動選擇。壓縮格式只能通過myisampack工具創(chuàng)建。當(dāng)使用CREATETABLE或ALTERTABLE操作不包含BLOB、TEXT列時,ROW_FORMAT選項強制設(shè)置存儲格式(FIXED、DYNAMIC)。靜態(tài)固定長度:·CHAR和VARCHAR自動用空格填充,BINARY和VARBIN
4、ARY以0x00填充?!た焖伲驗閿?shù)據(jù)文件中的行可以用簡單的方法找到:用行長度乘以行號?!と菀拙彺妗け罎⒑笕菀字亟?,因為行的位置固定。·不需要重新組織,除非刪除了大量的記錄,想為操作系統(tǒng)騰出磁盤空間??梢允褂肙PTIMIZETABLE或myisamchk-r完成?!ねǔ1葎討B(tài)格式花費更多的空間。動態(tài)可變長度:·字符型的列長度可變,除了長度小于4的·每行首部存在一個位圖,用于記錄哪些列包含空字符串(對于字符型)或0(對于數(shù)字型)。注意這里不包括NULL??沾?為被標(biāo)記在位圖中而不存儲在磁盤。非空字符串保存它的長度和實際內(nèi)容(即保存實際長度+
5、1)?!ねǔ1褥o態(tài)固定格式花費較少的空間?!と绻凶兊暮艽螅瑫λM行分片,導(dǎo)致行碎片。OPTIMIZETABLE或myisamchk-r可以用來改善性能。myisamchk-ei獲取表的統(tǒng)計信息?!け罎r比靜態(tài)格式的恢復(fù)困難,因為行可能被分為碎片而碎片的鏈接也可能失效。壓縮表:·花費非常少的磁盤空間,這對于低速存儲器(如CD-ROMs)很有幫助?!っ啃袉为毜貕嚎s,因此訪問開銷小。根據(jù)行的大小,每行的頭部占1到3個字節(jié)不等?!っ苛袎嚎s也不同,通常每列都具有不同的哈夫曼樹,以下為一些常見的壓縮類型:1、后綴空格壓縮2、前綴空格壓縮3、0值用1
6、位(bit)來存儲4、整型數(shù)值如果都分布在一小范圍中,則該列存儲使用更小的類型。比如BIGINT(8字節(jié))列中的值都分布在-128至127內(nèi),可以TINYINT(1字節(jié))存儲。5、列只有某幾種可能的值,轉(zhuǎn)換為ENUM類型6、以上各種壓縮類型都可任意結(jié)合·可以處理固定長度或動態(tài)長度記錄MyISAM表的問題當(dāng)以下事件發(fā)生時,可能導(dǎo)致表損壞:·mysqld進程在寫過程中被kill·不可意料的主機Crash·硬件故障·當(dāng)服務(wù)器正在修改表時,使用外部程序(如myisamchk)修改表·MySQL或MyISAM代碼存在的Bug不正確的關(guān)閉表:每個MyI
7、SAM索引文件(.MYI)在首部有一個計數(shù)器用來驗證表是否正確關(guān)閉。當(dāng)使用CHECKTABLE或myisamchk出現(xiàn)以下提示時表明計數(shù)器目前不同步:clientsareusingorhaven'tclosedthetableproperly