文件首頁
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


6.6.4.1 myisamchk 一般選項

本節描述的選項可用於 myisamchk 執行的任何類型的表格維護操作。本節之後的章節描述僅適用於特定操作的選項,例如表格檢查或修復。

  • --help-?

    命令列格式 --help

    顯示說明訊息並結束。選項會依操作類型分組。

  • --HELP-H

    命令列格式 --HELP

    顯示說明訊息並結束。選項會以單一清單呈現。

  • --debug=debug_options-# debug_options

    命令列格式 --debug[=debug_options]
    類型 字串
    預設值 d:t:o,/tmp/myisamchk.trace

    寫入除錯記錄。典型的 debug_options 字串是 d:t:o,file_name。預設值為 d:t:o,/tmp/myisamchk.trace

    僅當使用 WITH_DEBUG 建置 MySQL 時,此選項才可用。Oracle 提供的 MySQL 發行二進位檔並非使用此選項建置。

  • --defaults-extra-file=file_name

    命令列格式 --defaults-extra-file=file_name
    類型 檔案名稱

    在全域選項檔案之後,但在 (Unix 上) 使用者選項檔案之前讀取此選項檔案。如果檔案不存在或無法存取,則會發生錯誤。如果 file_name 不是絕對路徑名稱,則會將其解譯為相對於目前目錄的路徑名稱。

    關於此選項和其他選項檔案選項的詳細資訊,請參閱第 6.2.2.3 節,「影響選項檔案處理的命令列選項」

  • --defaults-file=file_name

    命令列格式 --defaults-file=file_name
    類型 檔案名稱

    僅使用指定的選項檔案。如果檔案不存在或無法存取,則會發生錯誤。如果 file_name 不是絕對路徑名稱,則會將其解譯為相對於目前目錄的路徑名稱。

    關於此選項和其他選項檔案選項的詳細資訊,請參閱第 6.2.2.3 節,「影響選項檔案處理的命令列選項」

  • --defaults-group-suffix=str

    命令列格式 --defaults-group-suffix=str
    類型 字串

    不僅讀取通常的選項群組,還讀取具有通常名稱和 str 後綴的群組。例如,myisamchk 通常會讀取 [myisamchk] 群組。如果將此選項指定為 --defaults-group-suffix=_other,則 myisamchk 也會讀取 [myisamchk_other] 群組。

    關於此選項和其他選項檔案選項的詳細資訊,請參閱第 6.2.2.3 節,「影響選項檔案處理的命令列選項」

  • --no-defaults

    命令列格式 --no-defaults

    不讀取任何選項檔案。如果因為從選項檔案讀取未知選項而導致程式啟動失敗,則可以使用 --no-defaults 來防止讀取這些選項。

    例外情況是,如果存在 .mylogin.cnf 檔案,則在所有情況下都會讀取該檔案。即使使用 --no-defaults,也可以使用比在命令列上更安全的方式指定密碼。若要建立 .mylogin.cnf,請使用 mysql_config_editor 公用程式。請參閱 第 6.6.7 節,「mysql_config_editor — MySQL 組態公用程式」

    關於此選項和其他選項檔案選項的詳細資訊,請參閱第 6.2.2.3 節,「影響選項檔案處理的命令列選項」

  • --print-defaults

    命令列格式 --print-defaults

    列印程式名稱和從選項檔案取得的所有選項。

    關於此選項和其他選項檔案選項的詳細資訊,請參閱第 6.2.2.3 節,「影響選項檔案處理的命令列選項」

  • --silent-s

    命令列格式 --silent

    靜音模式。僅在發生錯誤時寫入輸出。您可以將 -s 使用兩次 (-ss) 來使 myisamchk 非常靜音。

  • --verbose-v

    命令列格式 --verbose

    詳細模式。列印有關程式執行的更多資訊。這可以與 -d-e 一起使用。多次使用 -v (-vv-vvv) 可以獲得更多輸出。

  • --version-V

    命令列格式 --version

    顯示版本資訊並結束。

  • --wait-w

    命令列格式 --wait
    類型 布林值
    預設值 false

    當資料表被鎖定時,不會直接終止並顯示錯誤,而是會等待資料表解除鎖定後再繼續執行。如果您執行的 mysqld 禁用了外部鎖定,則資料表只能由另一個 myisamchk 命令鎖定。

您也可以使用 --var_name=value 語法來設定以下變數

變數 預設值
decode_bits 9
ft_max_word_len 版本相關
ft_min_word_len 4
ft_stopword_file 內建列表
key_buffer_size 523264
myisam_block_size 1024
myisam_sort_key_blocks 16
read_buffer_size 262136
sort_buffer_size 2097144
sort_key_blocks 16
stats_method nulls_unequal
write_buffer_size 262136

可以使用 myisamchk --help 來檢視可能的 myisamchk 變數及其預設值

myisam_sort_buffer_size 用於透過排序索引來修復索引時,這通常是您使用 --recover 的情況。sort_buffer_size 是已棄用的 myisam_sort_buffer_size 同義詞。

key_buffer_size 用於您使用 --extend-check 檢查資料表時,或透過將索引逐行插入資料表來修復索引時 (如執行一般插入時)。透過索引緩衝區修復會在以下情況使用:

  • 您使用 --safe-recover

  • 排序索引所需的暫存檔會比直接建立索引檔大兩倍以上。當您在 CHARVARCHARTEXT 資料行有大型索引值時,通常會發生這種情況,因為排序作業需要儲存完整索引值。如果您有大量的暫存空間,並且可以強制 myisamchk 透過排序來修復,您可以使用 --sort-recover 選項。

透過索引緩衝區修復比使用排序佔用的磁碟空間少得多,但也慢得多。

如果您想要更快的修復速度,請將 key_buffer_sizemyisam_sort_buffer_size 變數設定為大約可用記憶體的 25%。您可以將這兩個變數都設定為較大的值,因為一次只會使用其中一個。

myisam_block_size 是用於索引區塊的大小。

當提供 --analyze 選項時,stats_method 會影響索引統計資料收集時如何處理 NULL 值。它的作用類似於 myisam_stats_method 系統變數。如需更多資訊,請參閱第 7.1.8 節「伺服器系統變數」第 10.3.8 節「InnoDB 和 MyISAM 索引統計資料收集」myisam_stats_method 的說明。

ft_min_word_lenft_max_word_len 指出 MyISAM 資料表上 FULLTEXT 索引的最小和最大字詞長度。ft_stopword_file 會命名停止字詞檔案。這些需要在以下情況下設定。

如果您使用 myisamchk 來執行修改資料表索引的操作 (例如修復或分析),除非您另有指定,否則會使用最小和最大字詞長度以及停止字詞檔案的預設全文參數值來重建 FULLTEXT 索引。這可能會導致查詢失敗。

會發生此問題的原因是這些參數只有伺服器知道。它們不會儲存在 MyISAM 索引檔案中。為避免此問題,如果您已在伺服器中修改最小或最大字詞長度或停止字詞檔案,請在 myisamchk 中指定與您用於 mysqld 的相同 ft_min_word_lenft_max_word_lenft_stopword_file 值。例如,如果您已將最小字詞長度設定為 3,您可以像這樣使用 myisamchk 修復資料表

myisamchk --recover --ft_min_word_len=3 tbl_name.MYI

為確保 myisamchk 和伺服器對全文參數使用相同的值,您可以將每個參數都放在選項檔案的 [mysqld][myisamchk] 區段中

[mysqld]
ft_min_word_len=3

[myisamchk]
ft_min_word_len=3

使用 myisamchk 的替代方案是使用 REPAIR TABLEANALYZE TABLEOPTIMIZE TABLEALTER TABLE。這些陳述式由伺服器執行,伺服器知道要使用的正確全文參數值。