您的位置:首页 > 数据库 > MySQL

11、MySQL 8.0参考手册 4.6.4.5使用myisamchk获取表信息

2018-03-23 09:45 573 查看
要获得
MyISAM
关于它的表格或统计数据的描述,请使用这里显示的命令。这些命令的输出将在本节稍后介绍。myisamchk -d 
tbl_name
在“ 描述模式 ”中 运行myisamchk以生成表格的描述。如果启用禁用外部锁定的MySQL服务器,则 myisamchk可能会报告运行时更新的表的错误。但是,由于 myisamchk不以描述模式更改表,因此不存在破坏数据的风险。
myi
4000
samchk -dv 
tbl_name
以详细模式 添加
-v
运行myisamchk,以便它产生更多关于表的信息。
-v
再次添加会产生更多信息。
myisamchk -eis 
tbl_name
只显示表格中最重要的信息。此操作很慢,因为它必须读取整个表格。
myisamchk -eiv 
tbl_name
这就像
-eis
,但告诉你正在做什么。
所述
tbl_name
参数可以是任一的名称
MyISAM
表或它的索引文件的名称,如在第4.6.4节“ myisamchk的 - MyISAM表的维护工具”
tbl_name
可以给出多个参数。假设一个名为表
person
的结构如下。(
MAX_ROWS
包含表格选项,以便后面显示的myisamchk输出示例 中,某些值较小,更容易适合输出格式。)
CREATE TABLE person
(
id         INT NOT NULL AUTO_INCREMENT,
last_name  VARCHAR(20) NOT NULL,
first_name VARCHAR(20) NOT NULL,
birth      DATE,
death      DATE,
PRIMARY KEY (id),
INDEX (last_name, first_name),
INDEX (birth)
) MAX_ROWS = 1000000 ENGINE=MYISAM;
还假设该表具有这些数据和索引文件大小:
-rw-rw----  1 mysql  mysql  9347072 Aug 19 11:47 person.MYD
-rw-rw----  1 mysql  mysql  6066176 Aug 19 11:47 person.MYI
myisamchk -dvv输出 示例:
MyISAM file:         person
Record format:       Packed
Character set:       utf8mb4_0900_ai_ci (255)
File-version:        1
Creation time:       2017-03-30 21:21:30
Status:              checked,analyzed,optimized keys,sorted index pages
Auto increment key:              1  Last value:                306688
Data records:               306688  Deleted blocks:                 0
Datafile parts:             306688  Deleted data:                   0
Datafile pointer (bytes):        4  Keyfile pointer (bytes):        3
Datafile length:           9347072  Keyfile length:           6066176
Max datafile length:    4294967294  Max keyfile length:   17179868159
Recordlength:                   54

table description:
Key Start Len Index   Type                     Rec/key         Root  Blocksize
1   2     4   unique  long                           1                    1024
2   6     80  multip. varchar prefix                 0                    1024
87    80          varchar                        0
3   168   3   multip. uint24 NULL                    0                    1024

Field Start Length Nullpos Nullbit Type
1     1     1
2     2     4                      no zeros
3     6     81                     varchar
4     87    81                     varchar
5     168   3      1       1       no zeros
6     171   3      1       2       no zeros
这里给出了myisamchk产生 的信息类型的解释 。 “ 密钥文件”是指索引文件。 “ 记录 ”和“ 行 ”是同义词,“ 字段 ”和“ 列 ”同义。”表格描述的最初部分包含以下值:
MyISAM file
MyISAM
(索引)文件的 名称。
Record format
用于存储表格行的格式。前面的例子使用
Fixed length
。其他可能的值是
Compressed
和 
Packed
。(
Packed
 对应于什么
SHOW TABLE STATUS
 报告
Dynamic
)。
Chararacter set
表格默认字符集。
File-version
MyISAM
格式 版本。总是1。
Creation time
当数据文件被创建时。
Recover time
索引/数据文件上次重建时。
Status
表状态标志。可能的值是 
crashed
open
, 
changed
analyzed
, 
optimized keys
,和
sorted index pages

Auto increment key
, 
Last value
关键字编号与表格
AUTO_INCREMENT
列相关联 ,以及该列最近生成的值。如果没有这样的列,这些字段不会出现。
Data records
表中的行数。
Deleted blocks
有多少删除的块仍然有保留空间。您可以优化您的桌子以尽量减少这个空间。请参阅 第7.6.4节“MyISAM表优化”
Datafile parts
对于动态行格式,这表示有多少个数据块。对于没有分段行的优化表,这与之相同
Data records

Deleted data
有多少字节的未重复删除的数据存在。您可以优化您的桌子以尽量减少这个空间。请参阅 第7.6.4节“MyISAM表优化”
Datafile pointer
数据文件指针的大小,以字节为单位。它通常是2,3,4或5个字节。大多数表格使用2个字节进行管理,但是这不能由MySQL控制。对于固定表,这是一个行地址。对于动态表,这是一个字节地址。
Keyfile pointer
索引文件指针的大小,以字节为单位。它通常是1个,2个或3个字节。大多数表管理2个字节,但这是MySQL自动计算的。它总是一个块地址。
Max datafile length
表格数据文件可以变成多长时间,以字节为单位。
Max keyfile length
表索引文件可以变成多长时间,以字节为单位。
Recordlength
每行需要多少空间,以字节为单位。
table description
输出 的部分包括表中所有键的列表。对于每个键, myisamchk显示一些底层信息:
Key
此密钥的号码。该值仅显示在密钥的第一列。如果缺少此值,则该行对应于多列键的第二列或更晚列。对于示例中显示的表格,
table description
第二个索引有两行。这表明它是一个由两部分组成的多部分索引。
Start
索引的这一部分在哪里开始。
Len
这部分指数是多久。对于包装数字,这应始终是该列的全长。对于字符串,它可能比索引列的全长短,因为您可以索引字符串列的前缀。多部分键的总长度是
Len
所有关键部分的值的总和。
Index
索引中是否存在多次键值。可能的值是
unique
或 
multip.
(多个)。
Type
什么数据类型的这部分索引有。这是一个 
MyISAM
与可能的值的数据类型 
packed
stripped
或 
empty

Root
根索引块的地址。
Blocksize
每个索引块的大小。默认情况下这是1024,但是当从源生成MySQL时,可能会在编译时更改该值。
Rec/key
这是优化器使用的统计值。它告诉这个索引每个值有多少行。一个唯一的索引值始终为1.这可能会在使用myisamchk -a加载(或大大更改)表后更新。如果完全没有更新,则给出默认值30。
输出的最后部分提供有关每列的信息:
Field
列号。
Start
表格行内列的字节位置。
Length
列的长度(以字节为单位)。
Nullpos
, 
Nullbit
对于可能的列
NULL
, 
MyISAM
NULL
 值作为标志存储在一个字节中。根据有多少可空列,可以有一个或多个字节用于此目的。的
Nullpos
和 
Nullbit
值时,如果非空,指示哪些字节和位包含标志,指示该列是否为
NULL
。用于存储
NULL
标志的字节的位置和数量 显示在字段1的行中。这就是为什么表格有六
Field
行,
person
即使它只有五列。
Type
数据类型。该值可能包含以下任何描述符:
constant
所有行都具有相同的值。
no endspace
不要存储端点空间。
no endspace, not_always
不要存储端点空间,也不要对所有值进行端点空间压缩。
no endspace, no empty
不要存储端点空间。不要存储空值。
table-lookup
该列已转换为 
ENUM

zerofill(N
)
N
值中最重要的字节总是为0并且不被存储。
no zeros
不要存储零。
always zero
零值使用一位存储。

Huff tree
与该列关联的霍夫曼树的编号。
Bits
霍夫曼树中使用的位数。
Huff tree
Bits
 如果表已经被压缩与显示领域 的myisampack。有关此信息的示例,请参见第4.6.6节“ myisampack - 生成压缩的,只读的MyISAM表”myisamchk -eiv输出 示例:
Checking MyISAM file: person
Data records:  306688   Deleted blocks:       0
- check file-size
- check record delete-chain
No recordlinks
- check key delete-chain
block_size 1024:
- check index reference
- check data record references index: 1
Key:  1:  Keyblocks used:  98%  Packed:    0%  Max levels:  3
- check data record references index: 2
Key:  2:  Keyblocks used:  99%  Packed:   97%  Max levels:  3
- check data record references index: 3
Key:  3:  Keyblocks used:  98%  Packed:  -14%  Max levels:  3
Total:    Keyblocks used:  98%  Packed:   89%

- check records and index references
*** LOTS OF ROW NUMBERS DELETED ***

Records:            306688  M.recordlength:       25  Packed:            83%
Recordspace used:       97% Empty space:           2% Blocks/Record:   1.00
Record blocks:      306688  Delete blocks:         0
Record data:       7934464  Deleted data:          0
Lost space:         256512  Linkdata:        1156096

User time 43.08, System time 1.68
Maximum resident set size 0, Integral resident set size 0
Non-physical pagefaults 0, Physical pagefaults 0, Swaps 0
Blocks in 0 out 7, Messages in 0 out 0, Signals 0
Voluntary context switches 0, Involuntary context switches 0
Maximum memory usage: 1046926 bytes (1023k)
myisamchk -eiv输出包含以下信息:
Data records
表中的行数。
Deleted blocks
有多少删除的块仍然有保留空间。您可以优化您的桌子以尽量减少这个空间。请参阅 第7.6.4节“MyISAM表优化”
Key
关键号码。
Keyblocks used
使用哪些关键块的百分比。当一张桌子刚刚用myisamchk重组时,数值非常高(非常接近理论最大值)。
Packed
MySQL试图打包具有通用后缀的键值。这只能用于索引 
CHAR
和 
VARCHAR
列。对于具有相似最左部分的长索引字符串,这可以显着减少使用的空间。在前面的例子中,第二个关键字长度为40个字节,空间减少了97%。
Max levels
此密钥的B树有多深。具有长键值的大表格会获得较高的值。
Records
表中有多少行。
M.recordlength
平均行长。这是具有固定长度行的表的确切行长度,因为所有行都具有相同的长度。
Packed
MySQL从字符串的末尾剥去空格。该 
Packed
值表示通过这样做所实现的节省的百分比。
Recordspace used
数据文件使用的百分比。
Empty space
数据文件的百分比未被使用。
Blocks/Record
每行的平均块数(即一个分段行由多少个链接组成)。对于固定格式的表,这总是1.0。该值应尽可能接近1.0。如果太大,您可以重新组织表格。请参阅第7.6.4节“MyISAM表优化”
Recordblocks
使用了多少块(链接)。对于固定格式的表格,这与行数相同。
Deleteblocks
有多少块(链接)被删除。
Recorddata
数据文件中使用了多少个字节。
Deleted data
数据文件中有多少字节被删除(未使用)。
Lost space
如果一行被更新为更短的长度,则会丢失一些空间。这是所有这些损失的总和,以字节为单位。
Linkdata
当使用动态表格格式时,行片段与指针(每个4到7个字节)链接。 
Linkdata
是所有这些指针使用的存储量的总和。
本文由学什么技术好网翻译
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: