效能架構維護檔案 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。