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。