性能模式维护文件 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 表中事件仪器的名称。
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 发生。