本節描述的選項可以用于用myisamchk執行的任何類型的表維護操作。本節后面的章節中描述的選項只適合具體操作,例如檢查或修復表。
· --help,-?
顯示幫助消息并退出。
· --debug=debug_options, -# debug_options
輸出調試記錄文件。debug_options字符串經常是'd:t:o,filename'。
· --silent,-s
沉默模式。僅當發生錯誤時寫輸出。你能使用-s兩次(-ss)使myisamchk沉默。
· --verbose,-v
冗長模式。打印更多的信息。這能與-d和-e一起使用。為了更冗長,使用-v多次(-vv, -vvv)!
· --version, -V
顯示版本信息并退出。
· --wait, -w
如果表被鎖定,不是提示錯誤終止,而是在繼續前等待到表被解鎖。請注意如果用--skip-external-locking選項運行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 |
read_buffer_size |
262136 |
sort_buffer_size |
2097144 |
sort_key_blocks |
16 |
stats_method |
nulls_unequal |
write_buffer_size |
262136 |
可以用myisamchk --help檢查myisamchk變量及其 默認值:
當用排序鍵值修復鍵值時使用sort_buffer_size,使用--recover時這是很普通的情況。
當用--extend-check檢查表或通過一行一行地將鍵值插入表中(如同普通插入)來修改鍵值時使用Key_buffer_size。在以下情況通過鍵值緩沖區進行修復:
· 使用--safe-recover。
· 當直接創建鍵值文件時,需要對鍵值排序的臨時文件有兩倍大。通常是當CHAR、VARCHAR、或TEXT列的鍵值較大的情況,因為排序操作在處理過程中需要保存全部鍵值。如果你有大量臨時空間,可以通過排序強制使用myisamchk來修復,可以使用--sort-recover選項。
通過鍵值緩沖區的修復占用的硬盤空間比使用排序么少,但是要慢。
如果想要快速修復,將key_buffer_size和sort_buffer_size變量設置到大約可用內存的25%。可以將兩個變量設置為較大的值,因為一個時間只使用一個變量。
myisam_block_size是用于索引塊的內存大小。
stats_method影響當給定--analyze選項時,如何為索引統計搜集處理NULL值。它如同myisam_stats_method系統變量。詳細信息參見5.3.3節,“服務器系統變量”和7.4.7節,“MyISAM索引統計集合”的myisam_stats_method的描述。
ft_min_word_len和ft_max_word_len表示FULLTEXT索引的最小和最大字長。ft_stopword_file為停止字文件的文件名。需要在以下環境中對其進行設置。
如果你使用myisamchk來修改表索引(例如修復或分析),使用最小和最大字長和停止字文件的 默認全文參數值(除非你另外指定)重建FULLTEXT索引。這樣會導致查詢失敗。
出現這些問題是因為只有服務器知道這些參數。它們沒有保存在MyISAM索引文件中。如果你修改了服務器中的最小或最大字長或停止字文件,要避免該問題,為用于mysqld的myisamchk指定相同的ft_min_word_len,ft_max_word_len和ft_stopword_file值。例如,如果你將最小字長設置為3,可以這樣使用myisamchk來修復表:
shell> 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。這些語句由服務器執行,知道要使用的正確的全文參數值。