用show status分析MySQL的query
时间:2006-12-11 来源:gladness
又看了一篇非常不错的文章:
http://www.xaprb.com/blog/2006/10/12/how-to-profile-a-query-in-mysql/
show status有非常多的项目,但下面的几项与query最相关的:
key_read和key_write给出了一些额外的关于key的使用的信息。
last_query_cost是查询优化器判断出的上次查询的开销(成本)。
select_计数器为不同的select分别计数。可以用这些计数器去判断,是否有全表扫描(select_scan),扫描了索引的一个范围的join,等等。这些变量不是针对每行记录的统计。如果你写了一个查询很多记录的全表扫描,handler_read_next或者handler_read_rnd_next会增加很多,但是select_scan只增加1。
sort_merge_passes与merge-sort运算相关,可能一个查询中增加多次。sort_range和sort_scan每个查询中增加一次,如果通过一个range或者scan进行了排序。
table_locks_表示已经获取了多少个表锁,以及这些表锁有多少没有进行等待就立刻得到了。(table_locks_immedate和table_locks_waited)
需要注意的是,在MySQL5.0.2以后,show status相当于show session status,看会话级的统计。其中有的变量只有全局的统计,show session status看到的则是全局的统计。show global status是只看全局的统计。
http://www.xaprb.com/blog/2006/10/12/how-to-profile-a-query-in-mysql/
show status有非常多的项目,但下面的几项与query最相关的:
- Bytes_received
- Bytes_sent
- Created_tmp_disk_tables
- Created_tmp_files
- Created_tmp_tables
- Handler_
- Innodb_
- Key_read_requests
- Key_reads
- Key_write_requests
- Key_writes
- Last_query_cost
- Select_
- Sort_
- Table_locks_immediate
- Table_locks_waited
key_read和key_write给出了一些额外的关于key的使用的信息。
last_query_cost是查询优化器判断出的上次查询的开销(成本)。
select_计数器为不同的select分别计数。可以用这些计数器去判断,是否有全表扫描(select_scan),扫描了索引的一个范围的join,等等。这些变量不是针对每行记录的统计。如果你写了一个查询很多记录的全表扫描,handler_read_next或者handler_read_rnd_next会增加很多,但是select_scan只增加1。
sort_merge_passes与merge-sort运算相关,可能一个查询中增加多次。sort_range和sort_scan每个查询中增加一次,如果通过一个range或者scan进行了排序。
table_locks_表示已经获取了多少个表锁,以及这些表锁有多少没有进行等待就立刻得到了。(table_locks_immedate和table_locks_waited)
需要注意的是,在MySQL5.0.2以后,show status相当于show session status,看会话级的统计。其中有的变量只有全局的统计,show session status看到的则是全局的统计。show global status是只看全局的统计。
相关阅读 更多 +