本節描述的選項可用於 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
類型 檔案名稱 僅使用指定的選項檔案。如果檔案不存在或無法存取,則會發生錯誤。如果
file_name
不是絕對路徑名稱,則會將其解譯為相對於目前目錄的路徑名稱。關於此選項和其他選項檔案選項的詳細資訊,請參閱第 6.2.2.3 節,「影響選項檔案處理的命令列選項」。
-
命令列格式 --defaults-group-suffix=str
類型 字串 不僅讀取通常的選項群組,還讀取具有通常名稱和
str
後綴的群組。例如,myisamchk 通常會讀取[myisamchk]
群組。如果將此選項指定為--defaults-group-suffix=_other
,則 myisamchk 也會讀取[myisamchk_other]
群組。關於此選項和其他選項檔案選項的詳細資訊,請參閱第 6.2.2.3 節,「影響選項檔案處理的命令列選項」。
-
命令列格式 --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
列印程式名稱和從選項檔案取得的所有選項。
關於此選項和其他選項檔案選項的詳細資訊,請參閱第 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
。排序索引所需的暫存檔會比直接建立索引檔大兩倍以上。當您在
CHAR
、VARCHAR
或TEXT
資料行有大型索引值時,通常會發生這種情況,因為排序作業需要儲存完整索引值。如果您有大量的暫存空間,並且可以強制 myisamchk 透過排序來修復,您可以使用--sort-recover
選項。
透過索引緩衝區修復比使用排序佔用的磁碟空間少得多,但也慢得多。
如果您想要更快的修復速度,請將 key_buffer_size
和 myisam_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_len
和 ft_max_word_len
指出 MyISAM
資料表上 FULLTEXT
索引的最小和最大字詞長度。ft_stopword_file
會命名停止字詞檔案。這些需要在以下情況下設定。
如果您使用 myisamchk 來執行修改資料表索引的操作 (例如修復或分析),除非您另有指定,否則會使用最小和最大字詞長度以及停止字詞檔案的預設全文參數值來重建 FULLTEXT
索引。這可能會導致查詢失敗。
會發生此問題的原因是這些參數只有伺服器知道。它們不會儲存在 MyISAM
索引檔案中。為避免此問題,如果您已在伺服器中修改最小或最大字詞長度或停止字詞檔案,請在 myisamchk 中指定與您用於 mysqld 的相同 ft_min_word_len
、ft_max_word_len
和 ft_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 TABLE
、ANALYZE TABLE
、OPTIMIZE TABLE
或 ALTER TABLE
。這些陳述式由伺服器執行,伺服器知道要使用的正確全文參數值。