パフォーマンススキーマは、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 サマリーテーブルには、テーブルのイベントの集計方法を示す 1 つまたは複数のグループ化カラムがあります。 イベント名は、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
これらのカラムは
CREATE
、DELETE
、OPEN
、CLOSE
、STREAM_OPEN
、STREAM_CLOSE
、SEEK
、TELL
、FLUSH
、STAT
、FSTAT
、CHSIZE
、RENAME
、およびSYNC
を含むその他のすべての I/O 操作を集計します。 これらの操作のバイトカウントはありません。
ファイル I/O サマリーテーブルには、次のインデックスがあります:
-
file_summary_by_event_name
:主キー (
EVENT_NAME
)
-
file_summary_by_instance
:主キー (
OBJECT_INSTANCE_BEGIN
)(
FILE_NAME
) のインデックス(
EVENT_NAME
) のインデックス
TRUNCATE TABLE
はファイル I/O サマリーテーブルに使用できます。 それは、行を削除するのではなく、サマリーカラムを 0 にリセットします。
MySQL サーバーでは、複数の手法を使用して、ファイルから読み取られた情報をキャッシュすることで I/O 操作を回避するため、I/O イベントが発生すると予想されるステートメントではそうしない可能性があります。 キャッシュをフラッシュするか、サーバーを再起動して、その状態をリセットすることによって、I/O を発生させることができる場合があります。