mysql Myisamchk小工具使用手冊(cè)第2/2頁(yè)
更新時(shí)間:2008年10月25日 19:17:42 作者:
Myisamchk是MyISAM表維護(hù)的一個(gè)非常實(shí)用的工具??梢允褂胢yisamchk實(shí)用程序來(lái)獲得有關(guān)數(shù)據(jù)庫(kù)表的信息或檢查、修復(fù)、優(yōu)化他們。myisamchk適用MyISAM表(對(duì)應(yīng).MYI和.MYD文件的表)。
7.清理碎片
對(duì)Innodb 表則可以通過(guò)執(zhí)行以下語(yǔ)句來(lái)整理碎片,提高索引速度:
ALTER TABLE tbl_name ENGINE = Innodb;
這其實(shí)是一個(gè) NULL 操作,表面上看什么也不做,實(shí)際上重新整理碎片了。
對(duì)myisam表格,為了組合碎片記錄并且消除由于刪除或更新記錄而浪費(fèi)的空間,以恢復(fù)模式運(yùn)行myisamchk:
shell> myisamchk -r tbl_name
你可以用SQL的OPTIMIZE TABLE語(yǔ)句使用的相同方式來(lái)優(yōu)化表,OPTIMIZE TABLE可以修復(fù)表并對(duì)鍵值進(jìn)行分析,并且可以對(duì)索引樹(shù)進(jìn)行排序以便更快地查找鍵值。
8.建立表檢查計(jì)劃
運(yùn)行一個(gè)crontab,每天定期檢查所有的myisam表格。
35 0 * * 0 /path/to/myisamchk --fast --silent /path/to/datadir/*/*.MYI
9.獲取表的信息
myisamchk -d tbl_name:以“描述模式”運(yùn)行myisamchk,生成表的描述
myisamchk -d -v tbl_name: 為了生成更多關(guān)于myisamchk正在做什么的信息,加上-v告訴它以冗長(zhǎng)模式運(yùn)行。
myisamchk -eis tbl_name:僅顯示表的最重要的信息。因?yàn)楸仨氉x取整個(gè)表,該操作很慢。
myisamchk -eiv tbl_name:這類(lèi)似 -eis,只是告訴你正在做什么。
10.Myisamchk產(chǎn)生的信息解釋
MyISAM file
ISAM(索引)文件名。
File-version
ISAM格式的版本。當(dāng)前總是2。
Creation time
數(shù)據(jù)文件創(chuàng)建的時(shí)間。
Recover time
索引/數(shù)據(jù)文件上次被重建的時(shí)間。
Data records
在表中有多少記錄。
Deleted blocks
有多少刪除的塊仍然保留著空間。你可以?xún)?yōu)化表以使這個(gè)空間減到最小。參見(jiàn)第7章:優(yōu)化。
Datafile parts
對(duì)動(dòng)態(tài)記錄格式,這指出有多少數(shù)據(jù)塊。對(duì)于一個(gè)沒(méi)有碎片的優(yōu)化過(guò)的表,這與Data records相同。
Deleted data
不能回收的刪除數(shù)據(jù)有多少字節(jié)。你可以?xún)?yōu)化表以使這個(gè)空間減到最小。參見(jiàn)第7章:優(yōu)化。
Datafile pointer
數(shù)據(jù)文件指針的大小,以字節(jié)計(jì)。它通常是2、3、4或5個(gè)字節(jié)。大多數(shù)表用2個(gè)字節(jié)管理,但是目前這還不能從MySQL控制。
對(duì)固定表,這是一個(gè)記錄地址。對(duì)動(dòng)態(tài)表,這是一個(gè)字節(jié)地址。
Keyfile pointer
索引文件指針的大小,以字節(jié)計(jì)。它通常是1、2或3個(gè)字節(jié)。大多數(shù)表用 2 個(gè)字節(jié)管理,但是它自動(dòng)由MySQL計(jì)算。
它總是一個(gè)塊地址。
Max datafile length
表的數(shù)據(jù)文件(.MYD文件)能夠有多長(zhǎng),以字節(jié)計(jì)。
Max keyfile length
表的鍵值文件(.MYI文件)能夠有多長(zhǎng),以字節(jié)計(jì)。
Recordlength
每個(gè)記錄占多少空間,以字節(jié)計(jì)。
Record format
用于存儲(chǔ)表行的格式。上面的例子使用Fixed length。其他可能的值是Compressed和Packed。
table description
在表中所有鍵值的列表。對(duì)每個(gè)鍵,給出一些底層的信息:
Key
該鍵的編號(hào)。
Start
該索引部分從記錄的哪里開(kāi)始。
Len
該索引部分是多長(zhǎng)。對(duì)于緊湊的數(shù)字,這應(yīng)該總是列的全長(zhǎng)。對(duì)字符串,它可以比索引的列的全長(zhǎng)短些,
因?yàn)槟憧赡軙?huì)索引到字符串列的前綴。
Index
unique或multip(multiple)。表明一個(gè)值是否能在該索引中存在多次。
Type
該索引部分有什么數(shù)據(jù)類(lèi)型。這是一個(gè)packed、stripped或empty選項(xiàng)的ISAM數(shù)據(jù)類(lèi)型。
Root
根索引塊的地址。
Blocksize
每個(gè)索引塊的大小。默認(rèn)是1024,但是從源碼構(gòu)建MySQL時(shí),該值可以在編譯時(shí)改變。
Rec/key
這是由優(yōu)化器使用的統(tǒng)計(jì)值。它告訴對(duì)該鍵的每個(gè)值有多少條記錄。唯一鍵總是有一個(gè)1值。
在一個(gè)表被裝載后(或變更很大),可以用myisamchk -a更新。如果根本沒(méi)被更新,給定一個(gè)30的默認(rèn)值。
在上面例子的表中,第9個(gè)鍵有兩個(gè)table description行。這說(shuō)明它是有2個(gè)部分的多部鍵。
Keyblocks used
鍵塊使用的百分比是什么。當(dāng)在例子中使用的表剛剛用myisamchk重新組織時(shí),該值非常高(很接近理論上的最大值)。
Packed
MySQL試圖用一個(gè)通用后綴壓縮鍵。這只能被用于CHAR/VARCHAR/DECIMAL列的鍵。對(duì)于左部分類(lèi)似的長(zhǎng)字符串,
能顯著地減少使用空間。在上面的第3個(gè)例子中,第4個(gè)鍵是10個(gè)字符長(zhǎng),可以減少60%的空間。
Max levels
對(duì)于該鍵的B樹(shù)有多深。有長(zhǎng)鍵的大表有較高的值。
Records
表中有多少行。
M.recordlength
平均記錄長(zhǎng)度。對(duì)于有定長(zhǎng)記錄的表,這是準(zhǔn)確的記錄長(zhǎng)度,因?yàn)樗杏涗浀拈L(zhǎng)度相同。
Packed
MySQL從字符串的結(jié)尾去掉空格。Packed值表明這樣做達(dá)到的節(jié)約的百分比。
Recordspace used
數(shù)據(jù)文件被使用的百分比。
Empty space
數(shù)據(jù)文件未被使用的百分比。
Blocks/Record
每個(gè)記錄的平均塊數(shù)(即,一個(gè)碎片記錄由多少個(gè)連接組成)。對(duì)固定格式表,這總是1。該值應(yīng)該盡可能保持接近1.0。
如果它變得太大,你可以重新組織表。參見(jiàn)第7章:優(yōu)化。
Recordblocks
多少塊(鏈接)被使用。對(duì)固定格式,它與記錄的個(gè)數(shù)相同。
Deleteblocks
多少塊(鏈接)被刪除。
Recorddata
在數(shù)據(jù)文件中使用了多少字節(jié)。
Deleted data
在數(shù)據(jù)文件中多少字節(jié)被刪除(未使用)。
Lost space
如果一個(gè)記錄被更新為更短的長(zhǎng)度,就損失了一些空間。這是所有這樣的損失之和,以字節(jié)計(jì)。
Linkdata
當(dāng)使用動(dòng)態(tài)表格式,記錄碎片用指針連接(每個(gè)4 ~ 7字節(jié))。 Linkdata指這樣的指針使用的內(nèi)存量之和。
您可能感興趣的文章:
- Linux系統(tǒng)下mysqlcheck修復(fù)數(shù)據(jù)庫(kù)命令(詳解)
- mysql中優(yōu)化和修復(fù)數(shù)據(jù)庫(kù)工具mysqlcheck詳細(xì)介紹
- Mysql中Table ‘XXX’ is marked as crashed and last (automatic?)問(wèn)題解決方法
- Table ‘xxx’ is marked as crashed and should be repaired 錯(cuò)誤解決方法參考
- 如何使用myisamchk和mysqlcheck工具快速修復(fù)損壞的MySQL數(shù)據(jù)庫(kù)文件
相關(guān)文章
Mysql賬號(hào)管理與引擎相關(guān)功能實(shí)現(xiàn)流程
Mysql中的每一種技術(shù)都使用不同的存儲(chǔ)機(jī)制、索引技巧、鎖定水平、并且最終提供廣泛的不同功能和能力。通過(guò)選擇不同的技術(shù),你能夠獲得額外的速度或者功能,從而改善應(yīng)用的整體功能。這些不同的技術(shù)以及配套的相關(guān)功能在MySQL中被稱(chēng)作存儲(chǔ)引擎2022-10-10解決MySQL客戶(hù)端輸出窗口顯示中文亂碼問(wèn)題的辦法
這篇文章主要介紹了解決MySQL客戶(hù)端輸出窗口顯示中文亂碼問(wèn)題的辦法,需要的朋友可以參考下2015-12-12

MySQL redo死鎖問(wèn)題排查及解決過(guò)程分析
被告知在多實(shí)例場(chǎng)景下 MySQL Server hang 住,無(wú)法測(cè)試下去,原生版本不存在這個(gè)問(wèn)題,而新版本上出現(xiàn)了這個(gè)問(wèn)題,不禁心頭一顫,心中不禁感到奇怪,還好現(xiàn)場(chǎng)環(huán)境還在,為排查問(wèn)題提供了一個(gè)好的環(huán)境,隨即便投入到緊張的問(wèn)題排查過(guò)程當(dāng)中
2016-10-10 
Mysql創(chuàng)建通用設(shè)備管理信息系統(tǒng)數(shù)據(jù)庫(kù)
下面通過(guò)圖文并茂的方式給大家介紹通用設(shè)備管理信息系統(tǒng)數(shù)據(jù)庫(kù)的創(chuàng)建過(guò)程,感興趣的朋友一起學(xué)習(xí)
2016-04-04 
MySQL 的CASE WHEN 語(yǔ)句使用說(shuō)明
本文介紹下,在mysql數(shù)據(jù)庫(kù)中,有關(guān)case when語(yǔ)句的用法,介紹了case when語(yǔ)句的基礎(chǔ)知識(shí),并提供了相關(guān)實(shí)例,供大家學(xué)習(xí)參考,有需要的朋友不要錯(cuò)過(guò)
2011-10-10