程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql Myisamchk小對象應用手冊第1/2頁

mysql Myisamchk小對象應用手冊第1/2頁

編輯:MySQL綜合教程

mysql Myisamchk小對象應用手冊第1/2頁。本站提示廣大學習愛好者:(mysql Myisamchk小對象應用手冊第1/2頁)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql Myisamchk小對象應用手冊第1/2頁正文


1.myisamchk的挪用辦法
myisamchk [options] tbl_name ...
個中options指定你想讓myisamchk干甚麼。

它許可你經由過程應用形式“*.MYI”指定在一個目次一切的表。
shell> myisamchk *.MYI

推舉的疾速檢討一切MyISAM表的方法是:

shell> myisamchk --silent --fast /path/to/datadir/*/*.MYI
當你運轉myisamchk時,必需確保其它法式不應用表。

當你運轉myisamchk時內存分派主要.MYIsamchk應用的內存年夜小不克不及跨越用-O選項指定的。關於年夜多半情形,應用-O sort=16M應當足夠了。
別的在修復時myisamchk須要年夜量硬盤空間,根本上是所觸及表空間的雙倍年夜小。


2.myisamchk的普通選項
--debug=debug_options, -# debug_options
輸入調試記載文件。debug_options字符串常常是'd:t:o,filename'。

--silent,-s
緘默形式。僅當產生毛病時寫輸入。

--wait, -w
假如表被鎖定,不是提醒毛病終止,而是在持續前期待到表被解鎖。
假如不應用--skip-external-locking,可以隨時應用myisamchk來檢討表。當檢討表時,一切測驗考試更新表的客戶端將期待,直到myisamchk預備好可以持續。
請留意假如用--skip-external-locking選項運轉mysqld,只能用另外一個myisamchk敕令鎖定表。

--var_name=value
可以經由過程--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
假如想要疾速修復,將key_buffer_size和sort_buffer_size變量設置到年夜約可用內存的25%。
可以將兩個變量設置為較年夜的值,由於一個時光只應用一個變量。
myisam_block_size是用於索引塊的內存年夜小。
stats_method影響當給定--analyze選項時,若何為索引統計匯集處置NULL值。

3.myisamchk的檢討選項
--check, -c
檢討表的毛病。假如你不明白指定操作類型選項,這就是默許操作。

--check-only-changed, -C
只檢討前次檢討後有變革的表。

--extend-check, -e
異常細心地檢討表。假如表有很多索引將會相當慢。

--fast,-F
只檢討沒有准確封閉的表。

--force, -f
假如myisamchk發明表內有任何毛病,則主動停止修復。

--information, -i
打印所檢討表的統計信息。

--medium-check, -m
比--extend-check更疾速地停止檢討。只能發明99.99%的毛病

--update-state, -U
將信息保留在.MYI文件中,來表現表檢討的時光和能否表瓦解了。該選項用來充足應用--check-only-changed選項,
但假如mysqld辦事器正應用表而且正用--skip-external-locking選項運轉時不該應用該選項。

--read-only, -T
不要將表標志為曾經檢討。假如你應用myisamchk來檢討正被其它運用法式應用而沒有鎖定的表很有效

4.myisamchk的修復選項
--backup, -B
將.MYD文件備份為file_name-time.BAK

--character-sets-dir=path
字符集裝置目次。

--correct-checksum
改正表的校驗和信息。

--data-file-length=len, -D len
數據文件的最年夜長度

--extend-check,-e
停止修復,試圖從數據文件恢復每行。普通情形會發明年夜量的渣滓行。不要應用該選項,除非你掉臂效果。

--force, -f
籠罩舊的中央文件(文件名相似tbl_name.TMD),而不是中止

--keys-used=val, -k val
關於myisamchk,該選項值為位值,解釋要更新的索引。選項值的每個二進制位對應表的一個索引,個中第一個索引對應位0。
選項值0禁用對一切索引的更新,可以包管疾速拔出。經由過程myisamchk -r可以從新激活被禁用的索引。

--parallel-recover, -p
與-r和-n的用法雷同,但應用分歧的線程並行創立一切鍵。

--quick,-q
不修正數據文件,疾速停止修復。

--recover, -r
可以修復簡直一切一切成績,除非獨一的鍵不惟一時(關於MyISAM表,這長短常弗成能的情形)。假如你想要恢復表,
這是起首要測驗考試的選項。假如myisamchk申報表不克不及用-r恢復,則只能測驗考試-o。
在不太能夠的情形下-r掉敗,數據文件堅持無缺)。

--safe-recover, -o
應用一個老的恢復辦法讀取,按次序讀取一切行,並依據找到的行更新一切索引樹。這比-r慢些,
然則能處置-r不克不及處置的情形。該恢復辦法應用的硬盤空間比-r少。普通情形,你應起首用-r維修,假如-r掉敗則用-o。

--sort-recover, -n
強迫myisamchk經由過程排序來解析鍵值,即便暫時文件將能夠很年夜。


5.myisamchk的其他選項
myisamchk支撐以下表檢討和修復以外的其它操作的選項:

--analyze,-a
剖析鍵值的散布。這經由過程讓聯絡優化器更好地選擇表應當以甚麼順序聯絡和應當應用哪一個鍵來改良聯絡機能。
要想獲得散布相干信息,應用myisamchk --description --verbose tbl_name敕令或SHOW KEYS FROM tbl_name語句。

--sort-index, -S
以從高到低的次序排序索引樹塊。這將優化搜索而且將使按鍵值的表掃描更快。

--set-auto-increment[=value], -A[value]
強迫從給定值開端的新記載應用AUTO_INCREMENT編號(或假如曾經有AUTO_INCREMENT值年夜小的記載,應應用更高值)。
假如未指定value,新記載的AUTO_INCREMENT編號應應用以後表的最年夜值加上1。

--description, -d
打印出關於表的描寫性信息。
例如:
[root@qa-sandbox-1 mysql]# myisamchk -d user.MYI
MyISAM file: user.MYI
Record format: Packed
Character set: latin1_swedish_ci (8)
Data records: 6 Deleted blocks: 1
Recordlength: 346

table description:
Key Start Len Index Type
1 1 180 unique char packed stripped
181 48 char stripped


6.若何修復表

檢討你的表
假如你有許多時光,運轉myisamchk *.MYI或myisamchk -e *.MYI。應用-s(緘默)選項制止不用要的信息。
假如mysqld辦事器處於宕機狀況,應應用--update-state選項來告知myisamchk將表標志為'檢討過的'。

簡略平安的修復
起首,嘗嘗myisamchk -r -q tbl_name(-r -q意味著“疾速恢復形式”)
假如在修復時,你獲得奇異的毛病(例如out of memory毛病),或假如myisamchk瓦解,到階段3。

艱苦的修復
只要在索引文件的第一個16K塊被損壞,或包括不准確的信息,或假如索引文件喪失,你才應當到這個階段。在這類情形下,須要創立一個新的索引文件。按以下步調操做:

1. 把數據文件移到平安的處所。
2. 應用表描寫文件創立新的(空)數據文件和索引文件:
3. shell> mysql db_name
4. mysql> SET AUTOCOMMIT=1;
5. mysql> TRUNCATE TABLE tbl_name;
6. mysql> quit
假如你的MySQL版本沒有TRUNCATE TABLE,則應用DELETE FROM tbl_name。
7. 將老的數據文件拷貝到新創立的數據文件當中。(不要只是將老文件移回新文件當中;你要保存一個正本以防某些器械失足。)

回到階段2。如今myisamchk -r -q應當任務了。(這不該該是一個無窮輪回)。

你還可使用REPAIR TABLE tbl_name USE_FRM,將主動履行全部法式。


異常艱苦的修復
只要.frm描寫文件也損壞了,你才應當達到這個階段。這應當從未產生過,由於在表被創立今後,描寫文件就不再轉變了。

1. 從一個備份恢復描寫文件然後回到階段3。你也能夠恢復索引文件然後回到階段2。對後者,你應當用myisamchk -r啟動。
2. 假如你沒有停止備份然則確實地曉得表是如何創立的,在另外一個數據庫中創立表的一個拷貝。刪除新的數據文件,然後從其他數據庫將描寫文件和索引文件移到損壞的數據庫中。如許供給了新的描寫和索引文件,然則讓.MYD數據文件單獨留上去了。回到階段2而且測驗考試重建索引文件。

以後1/2頁 12下一頁浏覽全文
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved