Mysql查询数据IO次数如何计算

io次数与数据是否在buffer中、行在磁盘上的组织形式、是否利用索引都有关。
当索引是InnoDB时,参数列表:
Innodb_data_reads数据读请求量数量,包含 dic ,data,undo
Innodb_data_writes数据写请求量数量,包含 dic ,data,undo
Innodb_dblwr_writes 双写请求数
Innodb_log_writes 日志redo写请求数
计算IO公式:
Innodb_data_reads + Innodb_data_writes + Innodb_dblwr_writes + Innodb_log_writes
当索引是MyISAM时
计算公式:

Key_reads  * 2 +  Key_writes * 2 + Key_read_requests


命令行输入查询:
set profiling=1;
select * from tb;
...
...
show profile block io for query N;(适用5.1以上版本)
其他版本:
在开始前执行
flush status;
yoursql;
show status;
有很多状态变量可以查看,如:
Bytes_received
Bytes_sent
Last_query_cost 这个值*4k 就是随机读取的数据量,也就是IO次数

你可能感兴趣的:(IO)