文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美國信紙尺寸) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  MyISAM 啟動選項

18.2.1 MyISAM 啟動選項

下列 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 節,〈伺服器系統變數〉

  • bulk_insert_buffer_size

    用於大量插入最佳化的樹狀快取大小。

    注意

    這是每個執行緒的限制!

  • delay_key_write=ALL

    不要在任何 MyISAM 資料表的寫入之間清除索引緩衝區。

    注意

    如果這麼做,當資料表正在使用時,您不應該從另一個程式 (例如從另一個 MySQL 伺服器或使用 myisamchk) 存取 MyISAM 資料表。這麼做有索引損毀的風險。使用 --external-locking 無法消除此風險。

  • myisam_max_sort_file_size

    MySQL 在重新建立 MyISAM 索引時 (在 REPAIR TABLEALTER TABLELOAD DATA 期間) 允許使用的暫存檔最大大小。如果檔案大小會大於此值,則會改為使用索引快取建立索引,速度會比較慢。該值以位元組為單位。

  • myisam_recover_options=模式

    設定損毀 MyISAM 資料表自動復原的模式。

  • myisam_sort_buffer_size

    設定復原資料表時使用的緩衝區大小。

如果您啟動 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,復原程序會建立名稱格式為 tbl_name-datetime.BAK 的檔案。您應該有一個 cron 指令碼,自動將這些檔案從資料庫目錄移到備份媒體。