查看“使用myisamchk获取表信息”的源代码
←
使用myisamchk获取表信息
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
要获取MyISAM表的描述或统计信息,可以使用以下命令。 <br> <pre>myisamchk -d tbl_name</pre> 以“描述模式”运行myisamchk以生成表的描述。如果启动MySQL服务器时禁用了外部锁定,myisamchk可能在运行过程中报告表的错误。然而,由于myisamchk在描述模式下不会更改表,因此没有破坏数据的风险。 <br> <pre>myisamchk -dv tbl_name</pre> 添加-v运行myisamchk以使其生成关于表的更多信息。添加-v第二次会产生更多的信息。 <br> <pre>myisamchk -eis tbl_name</pre> 仅从表中显示最重要的信息。此操作缓慢,因为它必须读取整个表。 <br> <pre>myisamchk -eiv tbl_name</pre> 这与-eis类似,但告诉您正在做什么。 <br> tbl_name参数可以是MyISAM表的名称或其索引文件的名称。可以给出多个tbl_name参数。 <br> 假设有一个名为person的表,其结构如下。(MAX_ROWS表选项已包含在内,以便在稍后显示的myisamchk示例输出中,一些值较小且适合输出格式。) <pre>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;</pre> <br> 假设该表还有以下数据和索引文件大小: <pre>-rw-rw---- 1 mysql mysql 9347072 Aug 19 11:47 person.MYD -rw-rw---- 1 mysql mysql 6066176 Aug 19 11:47 person.MYI</pre> <br> myisamchk -dvv输出示例: <pre>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</pre> <br> myisamchk 生成的信息类型解释如下: # “Keyfile” 是指索引文件。 # “Record” 和 “row” 是同义词,“field” 和 “column” 也是同义词。 # 表描述的初始部分包含以下值: #* MyISAM 文件 #** MyISAM(索引)文件的名称。 #* Record format #** 用于存储表行的格式。前面的示例使用固定长度。其他可能的值是压缩和打包。(Packed 对应于 SHOW TABLE STATUS 报告为动态的情况。) #* Chararacter set #** 表的默认字符集。 #* File-version #** MyISAM 格式的版本。总是 1。 #* Creation time #** 数据文件创建的时间。 #* Recover time #** 索引/数据文件上次重建的时间。 #* Status #** 表状态标志。可能的值有崩溃、打开、已更改、分析、优化键和排序索引页面。 #* Auto increment key, Last value #** 与表的 AUTO_INCREMENT 列关联的键号,以及此列最近生成的值。如果没有这样的列,这些字段将不显示。 #* Data records #** 表中的行数。 #* Deleted blocks #** 仍有保留空间的已删除块的数量。您可以优化表以最小化此空间。 #* Datafile parts #** 对于动态行格式,这表示有多少个数据块。对于没有碎片行的优化表,这与 Data records 相同。 #* Deleted data #** 未回收的已删除数据的字节数。您可以优化表以最小化此空间。 #* Datafile pointer #** 数据文件指针的大小,以字节为单位。通常为 2、3、4 或 5 字节。大多数表管理 2 字节,但无法从 MySQL 控制。对于固定表,这是行地址。对于动态表,这是字节地址。 #* Keyfile pointer #** 索引文件指针的大小,以字节为单位。通常为 1、2 或 3 字节。大多数表管理 2 字节,但这由 MySQL 自动计算。它总是一个块地址。 #* Max datafile length #** 表数据文件可以变得多长,以字节为单位。 #* Max keyfile length #** 表索引文件可以变得多长,以字节为单位。 #* Recordlength #** 每行占用的空间,以字节为单位。 # 表描述部分的输出包括表中所有键的列表。对于每个键,myisamchk 显示一些低级信息: #* Key #** 此键的数字。仅显示第一个列的键值。如果此值为空,则该行对应于多个列键的第二个或以后列。在示例中,有两个表描述行用于第二个索引。这表明它是一个具有两个部分的多重索引。 #* Start #** 索引中此部分在行中的开始位置。 #* Len #** 此部分索引的长度。对于打包数字,这应该始终是列的完整长度。对于字符串,它可能比索引的完整长度短,因为您可以对字符串列的前缀进行索引。多重部分键的总长度是所有键部分的长度之和。 #* Index #** 键值是否可以在索引中多次存在。可能的值是 unique 或 multip。(multiple) #* Type #** 此部分索引的数据类型。这是一个 MyISAM 数据类型,可能的值是 packed、stripped 或 empty。 #* Root #** 根索引块的地址。 #* Blocksize #** 每个索引块的大小。默认情况下为 1024,但在编译时可以从源构建 MySQL 时更改。 #* Rec/key #** 优化器使用的统计值。它告诉每个此索引的值有多少行。唯一索引总是值为 1。如果在加载表后(或发生重大更改后)使用 myisamchk -a 更新此值,则可能会更新。如果从未更新,则默认值为 30。 # 最后一部分提供有关每个列的信息: #* Field #** 列号。 #* Start #** 列在表行中的字节位置。 #* Length #** 列的长度,以字节为单位。 #* Nullpos, Nullbit #** 对于可以 NULL 的列,MyISAM 将 NULL 值作为字节中的标记存储。根据可容纳的 NULL 列数量,可以有一个或多个字节用于此目的。如果非空,Nullpos 和 Nullbit 值指示哪个字节和位包含表示列是否为 NULL 的标志。 #* 位置和用于存储 NULL 标志的字节数显示在第 field 行中。这就是为什么对于只有五个列的人表,有六个 Field 行的原因。 #* Type #** 数据类型。值可能包含以下描述符之一:constant、no endspace、no endspace, not_always、no endspace, no empty、table-lookup、zerofill(N)、no zeros、always zero、Huff tree、Bits。 #* Huff tree and Bits fields 如果表使用 myisampack 压缩,则会显示 Huffman 树及其位数。 <br> myisamchk -eiv输出示例: <pre>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)</pre> myisamchk -eiv 输出包含以下信息: # 数据记录 #* 表中的行数。 # 已删除块 #* 仍保留空间的已删除块数量。您可以优化表以最小化此空间。 # 键 #* 键号。 # 使用的键块 #* 使用了多少百分比的键块。当一个表刚刚用myisamchk重新组织时,这些值非常高(非常接近理论最大值)。 # 打包 #* MySQL尝试对具有共同后缀的键值进行打包。这只能用于CHAR和VARCHAR列上的索引。对于具有相似左侧部分的长索引字符串,这可以显著减少使用的空格。在上述示例中,第二个键长为40字节,实现了97%的空间节省。 # 最大级别 #* 此键的B树深度。具有长键值的大型表会得到较高的值。 # 记录 #* 表中的行数。 # M.recordlength #* 平均行长度。这是固定长度行的确切行长度,因为所有行都具有相同的长度。 # 打包 #* MySQL从字符串末尾删除空格。Packed值表示通过执行此操作实现的节省百分比。 # 记录空间使用情况 #* 数据文件使用了多少百分比。 # 空空间 #* 数据文件未使用的百分比。 # 块/记录 #* 每行的平均块数(即,一个碎片化行的链接数)。对于固定格式表,此值为1.0。此值应尽可能接近1.0。如果它变得太大,您可以重新组织表。 # 记录块 #* 使用了多少个块(链接)。对于固定格式表,这与行数相同。 # 已删除块 #* 删除了多少个块(链接)。 # 记录数据 #* 数据文件中使用了多少字节。 # 已删除数据 #* 数据文件中已删除(未使用)的字节数。 # 丢失的空间 #* 如果一行更新为更短的长度,会丢失一些空间。这是所有这些损失的总和,以字节为单位。 # 链接数据 #* 当使用动态表格式时,行片段与指针(每个4到7字节)链接。链接数据是所有这些指针存储量的总和。 <br>
返回至“
使用myisamchk获取表信息
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
基础知识
正则表达式
Markdown
分布式
项目管理
系统集成项目管理基础知识
云原生
Docker
云原生安全
云原生词汇表
十二因素应用
Kubernetes
音频处理
音频合成
Edge-tts
CMS系统
Docsify
VuePress
Mediawiki
自动生成
Marp
CI/CD
GitLab
设计
颜色
平面设计
AI
数字人
操作系统
GNU/Linux
数据库
Mysql
工具
链入页面
相关更改
特殊页面
页面信息