当前位置: 移动技术网 > IT编程>数据库>Mysql > mysql Myisamchk小工具使用手册第1/2页

mysql Myisamchk小工具使用手册第1/2页

2017年12月12日  | 移动技术网IT编程  | 我要评论

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指这样的指针使用的内存量之和。
2

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网