Performance Schema 維護檔案 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。