我在数据库上做了一些实验。在这种情况下,每个查询都会从TPCH基准(select * from table;
)的一个表中选择所有内容。在每个查询之前和之后,我解析/proc/[pid]/io
,其中[pid]是数据库的进程。这些值的差异应该告诉我有关查询的IO。这是MySQL的典型输出(秒,MB):
Query time RCHAR WCHAR READ_BYTES WRITE_BYTES CANCELLED_WB
query1.sql| 0.005| 0.00234| 0.00245| 0.00391| 0.00000| 0.00000
query2.sql| 0.008| 0.00043| 0.00058| 0.00391| 0.00000| 0.00000
query3.sql| 0.041| 1.37217| 1.37296| 1.37891| 0.00000| 0.00000
query4.sql| 0.270| 23.41719| 23.64796| 23.44531| 0.00000| 0.00000
query5.sql| 0.346| 23.43413| 23.58974| 23.46484| 0.00000| 0.00000
query6.sql| 1.413| 113.77629| 115.76173| 113.89453| 0.00000| 0.00000
query7.sql| 1.792| 140.49537| 168.27847| 140.64062| 0.00000| 0.00000
query8.sql| 8.847| 614.04820| 759.00238| 614.65625| 0.00000| 0.00000
Overall| 12.738| 916.54611| 1091.65626| 917.48828| 0.00000| 0.00000
我想知道WCHAR
(写字母)值来自何处。我的查询“读取所有内容”而不是“写入任何内容”(因为'WRITE_BYTES'为空,实际上没有磁盘写入,但写入缓存/缓冲区?)。我在这里想念什么?
答案 0 :(得分:1)
我认为TTY io(可能是网络?)包含在WCHAR中,但WRITE_BYTES只计算写入磁盘的页面。