29.12.20.7 文件I/O总结表
性能模式维护文件I/O总结表,这些表格汇总了有关I/O操作的信息。
示例文件I/O事件总结信息:
mysql> SELECT * FROM performance_schema.file_summary_by_event_name\G
...
*************************** 2. row ***************************
EVENT_NAME: wait/io/file/sql/binlog
COUNT_STAR: 31
SUM_TIMER_WAIT: 8243784888
MIN_TIMER_WAIT: 0
AVG_TIMER_WAIT: 265928484
MAX_TIMER_WAIT: 6490658832
...
mysql> SELECT * FROM performance_schema.file_summary_by_instance\G
...
*************************** 2. row ***************************
FILE_NAME: /var/mysql/share/english/errmsg.sys
EVENT_NAME: wait/io/file/sql/ERRMSG
EVENT_NAME: wait/io/file/sql/ERRMSG
OBJECT_INSTANCE_BEGIN: 4686193384
COUNT_STAR: 5
SUM_TIMER_WAIT: 13990154448
MIN_TIMER_WAIT: 26349624
AVG_TIMER_WAIT: 2798030607
MAX_TIMER_WAIT: 8150662536
...
每个文件I/O总结表都有一个或多个分组列,用于指示如何对事件进行聚合。事件名称引用在setup_instruments
表中I/O事件工具的名称:
-
file_summary_by_event_name
有一个EVENT_NAME
列。每行总结了给定事件名称的事件。 -
file_summary_by_instance
有FILE_NAME
、EVENT_NAME
和OBJECT_INSTANCE_BEGIN
列。每行总结了给定文件和事件名称的事件。
每个文件I/O总结表都有以下总结列,包含聚合值。一些列更为通用,其值与更细粒度列值之和相同。在这种方式下,可以直接获得较高级别的聚合,而无需用户定义的视图来求和低级别列。
-
COUNT_STAR
、SUM_TIMER_WAIT
、MIN_TIMER_WAIT
、AVG_TIMER_WAIT
、MAX_TIMER_WAIT
这些列聚合所有I/O操作。
-
COUNT_READ
、SUM_TIMER_READ
、MIN_TIMER_READ
、AVG_TIMER_READ
、MAX_TIMER_READ
、SUM_NUMBER_OF_BYTES_READ
这些列聚合所有读操作,包括
FGETS
、FGETC
、FREAD
和READ
。 -
COUNT_WRITE
、SUM_TIMER_WRITE
、MIN_TIMER_WRITE
、AVG_TIMER_WRITE
、MAX_TIMER_WRITE
、SUM_NUMBER_OF_BYTES_WRITE
这些列聚合所有写操作,包括
FPUTS
、FPUTC
、FPRINTF
、VFPRINTF
、FWRITE
和PWRITE
。 -
COUNT_MISC
、SUM_TIMER_MISC
、MIN_TIMER_MISC
、AVG_TIMER_MISC
、MAX_TIMER_MISC
这些列聚合所有其他I/O操作,包括
CREATE
、DELETE
、OPEN
、CLOSE
、STREAM_OPEN
、STREAM_CLOSE
、SEEK
、TELL
、FLUSH
、STAT
、FSTAT
、CHSIZE
、RENAME
和SYNC
。对于这些操作,没有字节数统计。
文件I/O总结表有以下索引:
-
-
基于
EVENT_NAME
的主键
-
-
-
基于
OBJECT_INSTANCE_BEGIN
的主键 -
基于
FILE_NAME
的索引 -
基于
EVENT_NAME
的索引
-
TRUNCATE TABLE
允许对文件I/O总结表进行。它将总结列重置为零,而不是删除行。
MySQL服务器使用多种技术来避免I/O操作,通过缓存文件中读取的信息,因此可能会有语句,你期望它们会导致I/O事件,但实际上并未发生。你可能需要通过刷新缓存或重启服务器以重置其状态来确保I/O发生。