该 INNODB_CMP_PER_INDEX
和 INNODB_CMP_PER_INDEX_RESET
表提供了与压缩 InnoDB
表和索引相关的操作状态信息,每个数据库、表和索引的组合都有单独的统计信息,以帮助您评估压缩对特定表的性能和有用性。
对于压缩的 InnoDB
表,表数据和所有 次要索引 都被压缩。在这个上下文中,表数据被视为另一个索引,即包含所有列的 聚簇索引。
该 INNODB_CMP_PER_INDEX
和 INNODB_CMP_PER_INDEX_RESET
表具有以下列:
-
DATABASE_NAME
包含适用表的模式(数据库)。
-
TABLE_NAME
要监控压缩统计信息的表。
-
INDEX_NAME
要监控压缩统计信息的索引。
-
COMPRESS_OPS
尝试的压缩操作次数。页 在创建空白页或未压缩的修改日志空间用完时被压缩。
-
COMPRESS_OPS_OK
成功的压缩操作次数。从
COMPRESS_OPS
值中减去以获取压缩失败次数。将其除以COMPRESS_OPS
值以获取压缩失败百分比。 -
COMPRESS_TIME
用于压缩数据的总时间(以秒为单位)。
-
UNCOMPRESS_OPS
执行的解压缩操作次数。压缩的
InnoDB
页在压缩失败时或第一次访问压缩页时在 缓冲池 中解压缩,且未压缩的页不存在。 -
UNCOMPRESS_TIME
用于解压缩数据的总时间(以秒为单位)。
示例
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX\G
*************************** 1. row ***************************
database_name: employees
table_name: salaries
index_name: PRIMARY
compress_ops: 0
compress_ops_ok: 0
compress_time: 0
uncompress_ops: 23451
uncompress_time: 4
*************************** 2. row ***************************
database_name: employees
table_name: salaries
index_name: emp_no
compress_ops: 0
compress_ops_ok: 0
compress_time: 0
uncompress_ops: 1597
uncompress_time: 0
注意
-
使用这些表来衡量
InnoDB
表 压缩 对特定表、索引或两者的影响。 -
您必须拥有
PROCESS
权限以查询这些表。 -
使用
INFORMATION_SCHEMA
COLUMNS
表或SHOW COLUMNS
语句来查看这些表的列的更多信息,包括数据类型和默认值。 -
由于收集每个索引的单独测量值会带来很高的性能开销,因此,
INNODB_CMP_PER_INDEX
和INNODB_CMP_PER_INDEX_RESET
统计信息不会默认收集。您必须在执行要监控的压缩表操作之前启用innodb_cmp_per_index_enabled
系统变量。 -
有关使用信息,请参阅 第 17.9.1.4 节,“在运行时监控 InnoDB 表压缩” 和 第 17.15.1.3 节,“使用压缩信息模式表”。有关
InnoDB
表压缩的一般信息,请参阅 第 17.9 节,“InnoDB 表和页压缩”。