文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
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=_othermyisamchk 也會讀取 [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 同義詞。

當您使用 --extend-check 檢查表格時,或以逐行插入的方式將索引鍵修復到表格中時(例如進行一般插入時),會使用 key_buffer_size。在下列情況下,會使用索引鍵緩衝區進行修復:

  • 您使用 --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。這些陳述式是由伺服器執行的,伺服器知道要使用的正確全文參數值。