mysql Myisamchk小工具使用手册

  • A+
所属分类:数据库

7.清理碎片
对Innodb 表则可以通过执行以下语句来整理碎片,提高索引速度:
ALTER TABLE tbl_name ENGINE = Innodb;
这其实是一个 NULL 操作,表面上看什么也不做,实际上重新整理碎片了。

对myisam表格,为了组合碎片记录并且消除由于删除或更新记录而浪费的空间,以恢复模式运行myisamchk:

shell> myisamchk -r tbl_name

你可以用SQL的OPTIMIZE TABLE语句使用的相同方式来优化表,OPTIMIZE TABLE可以修复表并对键值进行分析,并且可以对索引树进行排序以便更快地查找键值。

8.建立表检查计划
运行一个crontab,每天定期检查所有的myisam表格。
35 0 * * 0 /path/to/myisamchk --fast --silent /path/to/datadir/*/*.MYI

9.获取表的信息

myisamchk -d tbl_name:以“描述模式”运行myisamchk,生成表的描述
myisamchk -d -v tbl_name: 为了生成更多关于myisamchk正在做什么的信息,加上-v告诉它以冗长模式运行。
myisamchk -eis tbl_name:仅显示表的最重要的信息。因为必须读取整个表,该操作很慢。
myisamchk -eiv tbl_name:这类似 -eis,只是告诉你正在做什么。

10.Myisamchk产生的信息解释

MyISAM file
ISAM(索引)文件名。

File-version
ISAM格式的版本。当前总是2。

Creation time
数据文件创建的时间。

Recover time
索引/数据文件上次被重建的时间。

Data records
在表中有多少记录。

Deleted blocks
有多少删除的块仍然保留着空间。你可以优化表以使这个空间减到最小。参见第7章:优化。

Datafile parts
对动态记录格式,这指出有多少数据块。对于一个没有碎片的优化过的表,这与Data records相同。

Deleted data
不能回收的删除数据有多少字节。你可以优化表以使这个空间减到最小。参见第7章:优化。

Datafile pointer
数据文件指针的大小,以字节计。它通常是2、3、4或5个字节。大多数表用2个字节管理,但是目前这还不能从MySQL控制。
对固定表,这是一个记录地址。对动态表,这是一个字节地址。

Keyfile pointer
索引文件指针的大小,以字节计。它通常是1、2或3个字节。大多数表用 2 个字节管理,但是它自动由MySQL计算。
它总是一个块地址。

Max datafile length
表的数据文件(.MYD文件)能够有多长,以字节计。

Max keyfile length
表的键值文件(.MYI文件)能够有多长,以字节计。

Recordlength
每个记录占多少空间,以字节计。

Record format
用于存储表行的格式。上面的例子使用Fixed length。其他可能的值是Compressed和Packed。

table description
在表中所有键值的列表。对每个键,给出一些底层的信息:
Key
该键的编号。
Start
该索引部分从记录的哪里开始。
Len
该索引部分是多长。对于紧凑的数字,这应该总是列的全长。对字符串,它可以比索引的列的全长短些,
因为你可能会索引到字符串列的前缀。
Index
unique或multip(multiple)。表明一个值是否能在该索引中存在多次。
Type
该索引部分有什么数据类型。这是一个packed、stripped或empty选项的ISAM数据类型。
Root
根索引块的地址。
Blocksize
每个索引块的大小。默认是1024,但是从源码构建MySQL时,该值可以在编译时改变。
Rec/key
这是由优化器使用的统计值。它告诉对该键的每个值有多少条记录。唯一键总是有一个1值。
在一个表被装载后(或变更很大),可以用myisamchk -a更新。如果根本没被更新,给定一个30的默认值。
在上面例子的表中,第9个键有两个table description行。这说明它是有2个部分的多部键。

Keyblocks used
键块使用的百分比是什么。当在例子中使用的表刚刚用myisamchk重新组织时,该值非常高(很接近理论上的最大值)。

Packed
MySQL试图用一个通用后缀压缩键。这只能被用于CHAR/VARCHAR/DECIMAL列的键。对于左部分类似的长字符串,
能显着地减少使用空间。在上面的第3个例子中,第4个键是10个字符长,可以减少60%的空间。

Max levels
对于该键的B树有多深。有长键的大表有较高的值。

Records
表中有多少行。

M.recordlength
平均记录长度。对于有定长记录的表,这是准确的记录长度,因为所有记录的长度相同。

Packed
MySQL从字符串的结尾去掉空格。Packed值表明这样做达到的节约的百分比。

Recordspace used
数据文件被使用的百分比。

Empty space
数据文件未被使用的百分比。

Blocks/Record
每个记录的平均块数(即,一个碎片记录由多少个连接组成)。对固定格式表,这总是1。该值应该尽可能保持接近1.0。
如果它变得太大,你可以重新组织表。参见第7章:优化。

Recordblocks
多少块(链接)被使用。对固定格式,它与记录的个数相同。

Deleteblocks
多少块(链接)被删除。

Recorddata
在数据文件中使用了多少字节。

Deleted data
在数据文件中多少字节被删除(未使用)。

Lost space
如果一个记录被更新为更短的长度,就损失了一些空间。这是所有这样的损失之和,以字节计。

Linkdata
当使用动态表格式,记录碎片用指针连接(每个4 ~ 7字节)。 Linkdata指这样的指针使用的内存量之和。

图片引用自网络