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

要获得MyISAM关于它表格或统计数据的描述,请使用这里显示的命令。这些命令的输出将在本节稍后介绍。

  • myisamchk -d tbl_name

    “ 描述模式 ”中 运行myisamchk以生成表格的描述。如果启用禁用外部锁定的MySQL服务器,则 myisamchk可能会报告运行时更新的表的错误。但是,由于 myisamchk不以描述模式更改表,因此不存在破坏数据的风险。

  • myisamchk -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和 PackedPacked 对应于什么SHOW TABLE STATUS 报告Dynamic)。

  • Chararacter set

    表格默认字符集。

  • File-version

    MyISAM格式 版本总是1。

  • Creation time

    当数据文件被创建时。

  • Recover time

    索引/数据文件上次重建时。

  • Status

    表状态标志。可能的值是 crashedopen, changedanalyzed, 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与可能的值的数据类型 packedstripped或 empty

  • Root

    根索引块的地址。

  • Blocksize

    每个索引块的大小。默认情况下这是1024,但是当从源生成MySQL时,可能会在编译时更改该值。

  • Rec/key

    这是优化器使用的统计值。它告诉这个索引每个值有多少行。一个唯一的索引值始终为1.这可能会在使用myisamchk -a加载(或大大更改)表后更新如果完全没有更新,则给出默认值30。

输出的最后部分提供有关每列的信息:

  • Field

    列号。

  • Start

    表格行内列的字节位置。

  • Length

    列的长度(以字节为单位)。

  • Nullpos, Nullbit

    对于可能的列NULL, MyISAMNULL 值作为标志存储在一个字节中。根据有多少可空列,可以有一个或多个字节用于此目的。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 treeBits 如果表已经被压缩与显示领域 的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是所有这些指针使用的存储量的总和。

本文由学什么技术好网翻译

你可能感兴趣的:(mysql8.0)