28.4.8 INFORMATION_SCHEMA INNODB_CMP_PER_INDEX 和 INNODB_CMP_PER_INDEX_RESET 表
INNODB_CMP_PER_INDEX 和 INNODB_CMP_PER_INDEX_RESET 表提供了有关压缩的 InnoDB
表和索引操作的状态信息,包括每个数据库、表和索引组合的单独统计信息,以帮助您评估压缩对特定表的性能和有用性。
对于一个压缩的 InnoDB
表,它的表数据和所有次要索引都被压缩。在这个上下文中,表数据被视为另一个索引,只不过它包含了所有列:聚簇索引。
INNODB_CMP_PER_INDEX 和 INNODB_CMP_PER_INDEX_RESET 表具有以下列:
-
数据库名称
包含适用表的架构(数据库)。
-
表名称
用于监控压缩统计信息的表。
-
索引名称
用于监控压缩统计信息的索引。
-
压缩操作
尝试进行的压缩操作数量。页面在创建空白页面或修改日志空间不足时被压缩。
-
成功压缩操作
成功进行的压缩操作数量。将
COMPRESS_OPS
值减去该值以获取压缩失败的数量。将该值除以COMPRESS_OPS
值以获取压缩失败百分比。 -
压缩时间
用于压缩数据的总时间(秒),在该索引中。
-
解压操作
执行的解压操作数量。压缩的InnoDB页面在压缩失败时或首次访问缓冲池且未找到未压缩页面时被解压。
-
解压时间
用于解压数据的总时间(秒),在该索引中。
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 表和页面压缩”。