29.12.20.8 表 I/O 和锁等待摘要表
以下部分描述了表 I/O 和锁等待摘要表:
-
table_io_waits_summary_by_index_usage
:表 I/O 等待索引 -
table_io_waits_summary_by_table
:表 I/O 等待表
The table_io_waits_summary_by_table
表对所有表 I/O 等待事件进行聚合,生成由 wait/io/table/sql/handler
instrument 生成的事件。分组是根据表。
The table_io_waits_summary_by_table
表具有以下分组列,以指示如何对事件进行聚合:OBJECT_TYPE
,OBJECT_SCHEMA
和 OBJECT_NAME
。这些列在 events_waits_current
表中具有相同的含义。它们标识了该行适用的表。
table_io_waits_summary_by_table
表具有以下汇总列,包含聚合值。正如列描述所示,一些列是更通用的,具有与相应的插入、更新和删除列相同的值。例如,聚合所有写入的列持有相应的插入、更新和删除列的总和。在这种方式下,高级聚合可以直接可用,而不需要用户定义的视图来求和低级列。
-
COUNT_STAR
,SUM_TIMER_WAIT
,MIN_TIMER_WAIT
,AVG_TIMER_WAIT
,MAX_TIMER_WAIT
这些列聚合所有 I/O 操作。它们与相应的
和xxx
_READ
列相同,为所有 I/O 操作的总和。xxx
_WRITE -
COUNT_READ
,SUM_TIMER_READ
,MIN_TIMER_READ
,AVG_TIMER_READ
,MAX_TIMER_READ
这些列对所有读操作进行聚合。它们与相应的
列的总和相同。xxx
_FETCH -
COUNT_WRITE
,SUM_TIMER_WRITE
,MIN_TIMER_WRITE
,AVG_TIMER_WRITE
,MAX_TIMER_WRITE
这些列对所有写操作进行聚合。它们与相应的
,xxx
_INSERT
, 和xxx
_UPDATE
列的总和相同。xxx
_DELETE -
COUNT_FETCH
,SUM_TIMER_FETCH
,MIN_TIMER_FETCH
,AVG_TIMER_FETCH
,MAX_TIMER_FETCH
这些列对所有fetch操作进行聚合。
-
COUNT_INSERT
,SUM_TIMER_INSERT
,MIN_TIMER_INSERT
,AVG_TIMER_INSERT
,MAX_TIMER_INSERT
这些列对所有插入操作进行聚合。
-
COUNT_UPDATE
,SUM_TIMER_UPDATE
,MIN_TIMER_UPDATE
,AVG_TIMER_UPDATE
,MAX_TIMER_UPDATE
这些列对所有更新操作进行聚合。
-
COUNT_DELETE
,SUM_TIMER_DELETE
,MIN_TIMER_DELETE
,AVG_TIMER_DELETE
,MAX_TIMER_DELETE
这些列对所有删除操作进行聚合。
表table_io_waits_summary_by_table
具有以下索引:
-
唯一索引(
OBJECT_TYPE
,OBJECT_SCHEMA
,OBJECT_NAME
)
TRUNCATE TABLE
允许对表I/O摘要表进行截断。截断将将摘要列设置为零,而不是删除行。截断该表也将截断table_io_waits_summary_by_index_usage
表。
表table_io_waits_summary_by_index_usage
对所有表索引I/O等待事件进行聚合,生成器是wait/io/table/sql/handler工具。分组是根据表索引。
table_io_waits_summary_by_index_usage
表的列几乎与table_io_waits_summary_by_table
表的列相同。唯一的区别是额外的组列INDEX_NAME
,它对应于记录的表I/O等待事件时使用的索引名称:
-
一个值为
PRIMARY
的索引表示表I/O使用了主索引。 -
一个值为
NULL
的索引表示表I/O没有使用索引。 -
插入操作将被计入
INDEX_NAME = NULL
。
表table_io_waits_summary_by_index_usage
具有以下索引:
-
唯一索引(
OBJECT_TYPE
,OBJECT_SCHEMA
,OBJECT_NAME
,INDEX_NAME
)
TRUNCATE TABLE
对表I/O摘要表是允许的。它将摘要列重置为零,而不是删除行。这张表也可以通过truncate table_io_waits_summary_by_table
表的truncate操作。DDL操作可能会导致表的索引结构变化,从而导致每个索引的统计信息被重置。
表table_lock_waits_summary_by_table
表对所有表锁等待事件进行聚合,生成由wait/lock/table/sql/handler
instrument 生成的锁定事件。该表的分组是根据表进行的。
这张表包含关于内部和外部锁的信息:
-
内部锁对应于SQL层面的锁。这目前由
thr_lock()
调用实现。在事件行中,这些锁被区分开来,以便在OPERATION
列中,它们具有以下值之一:read normal read with shared locks read high priority read no insert write allow write write concurrent insert write delayed write low priority write normal
-
外部锁对应于存储引擎层面的锁。这目前由
handler::external_lock()
调用实现。在事件行中,这些锁被区分开来,以便在OPERATION
列中,它们具有以下值之一:read external write external
《table_lock_waits_summary_by_table
》表具有以下分组列,以指示如何对事件进行聚合:OBJECT_TYPE
,OBJECT_SCHEMA
和OBJECT_NAME
。这些列在events_waits_current
表中具有相同的含义。它们标识了该行所属的表。
table_lock_waits_summary_by_table
还具有以下汇总列,包含聚合值。正如列描述所示,一些列更为通用,具有与低级别列相同的值的总和。例如,聚合所有锁定的列将总和对应的读写锁定的列。这样,在更高级别的聚合中,可以直接访问,而不需要用户定义的视图来求和低级别列。
-
COUNT_STAR
,SUM_TIMER_WAIT
,MIN_TIMER_WAIT
,AVG_TIMER_WAIT
,MAX_TIMER_WAIT
这些列聚合所有锁定操作。它们与对应的
和xxx
_READ
列相同。xxx
_WRITE -
COUNT_READ
,SUM_TIMER_READ
,MIN_TIMER_READ
,AVG_TIMER_READ
,MAX_TIMER_READ
这些列聚合所有读锁定操作。它们与对应的
,xxx
_READ_NORMAL
,xxx
_READ_WITH_SHARED_LOCKS
和xxx
_READ_HIGH_PRIORITY
列相同。xxx
_READ_NO_INSERT -
COUNT_WRITE
,SUM_TIMER_WRITE
,MIN_TIMER_WRITE
,AVG_TIMER_WRITE
,MAX_TIMER_WRITE
这些列聚合所有写锁定操作。它们与对应的
,xxx
_WRITE_ALLOW_WRITE
,xxx
_WRITE_CONCURRENT_INSERT
和xxx
_WRITE_LOW_PRIORITY
列相同。xxx
_WRITE_NORMAL -
COUNT_READ_NORMAL
,SUM_TIMER_READ_NORMAL
,MIN_TIMER_READ_NORMAL
,AVG_TIMER_READ_NORMAL
,MAX_TIMER_READ_NORMAL
这些列聚合内部读锁定。
-
COUNT_READ_WITH_SHARED_LOCKS
,SUM_TIMER_READ_WITH_SHARED_LOCKS
,MIN_TIMER_READ_WITH_SHARED_LOCKS
,AVG_TIMER_READ_WITH_SHARED_LOCKS
,MAX_TIMER_READ_WITH_SHARED_LOCKS
这些列聚合内部读锁。
-
COUNT_READ_HIGH_PRIORITY
,SUM_TIMER_READ_HIGH_PRIORITY
,MIN_TIMER_READ_HIGH_PRIORITY
,AVG_TIMER_READ_HIGH_PRIORITY
,MAX_TIMER_READ_HIGH_PRIORITY
这些列聚合内部读锁。
-
COUNT_READ_NO_INSERT
,SUM_TIMER_READ_NO_INSERT
,MIN_TIMER_READ_NO_INSERT
,AVG_TIMER_READ_NO_INSERT
,MAX_TIMER_READ_NO_INSERT
这些列聚合内部读锁。
-
COUNT_READ_EXTERNAL
,SUM_TIMER_READ_EXTERNAL
,MIN_TIMER_READ_EXTERNAL
,AVG_TIMER_READ_EXTERNAL
,MAX_TIMER_READ_EXTERNAL
这些列聚合外部读锁。
-
COUNT_WRITE_ALLOW_WRITE
,SUM_TIMER_WRITE_ALLOW_WRITE
,MIN_TIMER_WRITE_ALLOW_WRITE
,AVG_TIMER_WRITE_ALLOW_WRITE
,MAX_TIMER_WRITE_ALLOW_WRITE
这些列聚合内部写锁。
-
COUNT_WRITE_CONCURRENT_INSERT
,SUM_TIMER_WRITE_CONCURRENT_INSERT
,MIN_TIMER_WRITE_CONCURRENT_INSERT
,AVG_TIMER_WRITE_CONCURRENT_INSERT
,MAX_TIMER_WRITE_CONCURRENT_INSERT
这些列聚合内部写锁。
-
COUNT_WRITE_LOW_PRIORITY
,SUM_TIMER_WRITE_LOW_PRIORITY
,MIN_TIMER_WRITE_LOW_PRIORITY
,AVG_TIMER_WRITE_LOW_PRIORITY
,MAX_TIMER_WRITE_LOW_PRIORITY
这些列聚合内部写锁。
-
COUNT_WRITE_NORMAL
,SUM_TIMER_WRITE_NORMAL
,MIN_TIMER_WRITE_NORMAL
,AVG_TIMER_WRITE_NORMAL
,MAX_TIMER_WRITE_NORMAL
这些列聚合内部写锁。
-
COUNT_WRITE_EXTERNAL
,SUM_TIMER_WRITE_EXTERNAL
,MIN_TIMER_WRITE_EXTERNAL
,AVG_TIMER_WRITE_EXTERNAL
,MAX_TIMER_WRITE_EXTERNAL
这些列聚合外部写锁。
表table_lock_waits_summary_by_table
有这些索引:
-
唯一索引在(
OBJECT_TYPE
,OBJECT_SCHEMA
,OBJECT_NAME
)
TRUNCATE TABLE
对于锁定表的摘要表是允许的。它将摘要列重置为零,而不是删除行。