用sys schema一行SQL查出真实按文件类型分类的I/O统计,看它是怎么把performance_schema的原始数字包装成人类可读的信息的。
代码SELECT * FROM sys.io_global_by_wait_by_bytes LIMIT 3;
event_name total total_latency count_read total_read count_write total_written innodb/innodb_data_file 6730 768.31 ms 2050 31.98 MiB 3511 89.37 MiB innodb/innodb_log_file 3184 431.71 ms 0 0 bytes 1985 103.53 MiB innodb/innodb_dblwr_file 324 95.49 ms 2 16.00 MiB 158 50.58 MiB
innodb_log_file这一行真实count_read=0,只有写没有读——这跟redo log真实"只追加写入、几乎不会被读取"的特性完全对得上;innodb_dblwr_file这一行的66.58MiB(读16MiB+写50.58MiB),真实和本文前面《Doublewrite Buffer》那一篇观察到的行为是同一套机制留下的真实痕迹。这些数字都是本机这台开发机长期运行下来真实累积的I/O统计,不是构造出来的样例。
每一步都是本文上面用真实的sys schema视图跑出来的原始结果。
sys.io_global_by_wait_by_bytes / sys.statement_analysis