效能架構維護檔案 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)
檔案 I/O 摘要表允許使用 TRUNCATE TABLE。它會將摘要欄位重設為零,而不是移除列。
MySQL 伺服器使用多種技術來避免 I/O 操作,方法是快取從檔案讀取的資訊,因此您可能預期會產生 I/O 事件的陳述式可能不會產生。您可以透過清除快取或重新啟動伺服器來重設其狀態,確保確實發生 I/O。