下列 mysqld 的選項可用於變更 MyISAM
資料表的行為。如需其他資訊,請參閱第 7.1.7 節, 「伺服器命令選項」。
表 18.3 MyISAM 選項和變數參考
名稱 | 命令列 | 選項檔案 | 系統變數 | 狀態變數 | 變數範圍 | 動態 |
---|---|---|---|---|---|---|
bulk_insert_buffer_size | 是 | 是 | 是 | 兩者 | 是 | |
concurrent_insert | 是 | 是 | 是 | 全域 | 是 | |
delay_key_write | 是 | 是 | 是 | 全域 | 是 | |
have_rtree_keys | 是 | 全域 | 否 | |||
key_buffer_size | 是 | 是 | 是 | 全域 | 是 | |
log-isam | 是 | 是 | ||||
myisam-block-size | 是 | 是 | ||||
myisam_data_pointer_size | 是 | 是 | 是 | 全域 | 是 | |
myisam_max_sort_file_size | 是 | 是 | 是 | 全域 | 是 | |
myisam_mmap_size | 是 | 是 | 是 | 全域 | 否 | |
myisam_recover_options | 是 | 是 | 是 | 全域 | 否 | |
myisam_sort_buffer_size | 是 | 是 | 是 | 兩者 | 是 | |
myisam_stats_method | 是 | 是 | 是 | 兩者 | 是 | |
myisam_use_mmap | 是 | 是 | 是 | 全域 | 是 | |
tmp_table_size | 是 | 是 | 是 | 兩者 | 是 |
下列系統變數會影響 MyISAM
資料表的行為。如需其他資訊,請參閱第 7.1.8 節, 「伺服器系統變數」。
用於大量插入最佳化的樹狀快取大小。
注意這是每個執行緒的限制!
不要在寫入任何
MyISAM
資料表之間清除索引鍵緩衝區。注意如果您這樣做,當資料表正在使用中時,您不應該從其他程式(例如從另一個 MySQL 伺服器或使用 myisamchk)存取
MyISAM
資料表。這樣做有索引損毀的風險。使用--external-locking
無法消除此風險。MySQL 在重新建立
MyISAM
索引時(在REPAIR TABLE
、ALTER TABLE
或LOAD DATA
期間),允許使用的暫存檔最大大小。如果檔案大小會大於此值,則會改用索引鍵快取建立索引,速度會比較慢。此值以位元組為單位。設定損毀
MyISAM
資料表的自動復原模式。設定復原資料表時使用的緩衝區大小。
如果您啟動 mysqld 並設定 myisam_recover_options
系統變數,就會啟用自動復原。在此情況下,當伺服器開啟 MyISAM
資料表時,它會檢查資料表是否標記為損毀,或者資料表的開啟計數變數是否不為 0,並且您是在停用外部鎖定的情況下執行伺服器。如果上述任一條件成立,就會發生下列情況
伺服器會檢查資料表是否有錯誤。
如果伺服器發現錯誤,它會嘗試快速修復資料表(使用排序,不重新建立資料檔)。
如果由於資料檔中的錯誤(例如,重複索引鍵錯誤)而導致修復失敗,伺服器會再次嘗試,這次會重新建立資料檔。
如果修復仍然失敗,伺服器會再次使用舊的修復選項方法(逐列寫入,不排序)。此方法應該能夠修復任何類型的錯誤,而且磁碟空間需求較低。
如果復原無法從先前完成的陳述式復原所有列,而且您未在 myisam_recover_options
系統變數的值中指定 FORCE
,則自動修復會中止,並在錯誤日誌中顯示錯誤訊息
Error: Couldn't repair table: test.g00pages
如果您指定 FORCE
,則會改為寫入像這樣的警告
Warning: Found 344 of 354 rows when repairing ./test/g00pages
如果自動復原值包含 BACKUP
,復原程序會建立名稱格式為
的檔案。您應該有一個 cron 指令碼,可自動將這些檔案從資料庫目錄移至備份媒體。資料表名稱-日期時間
.BAK