MySQL中handler_read的用法

概述

MySQL有一个神秘的HANDLER命令,此命令非SQL标准语法,可以降低优化器对于SQL语句的解析与优化开销,从而提升查询性能。
在这里插入图片描述

步骤

# 1. 更新会话
FLUSH STATUS;
# 2. 执行一段SQL语句
SELECT * FROM CAR WHERE CAR_BRANK LIKE "别克%" ORDER BY ID DESC LIMIT 10;
# 3.1 查看当前会话
SHOW SESSION STATUS LIKE "handler_read%";
# 3.2 查看全局会话
SHOW GLOBAL STATUS LIKE "HANDLER%"
# 4. 解释SQL语句
EXPLAIN SELECT * FROM CAR WHERE CAR_BRANK LIKE "别克%" ORDER BY ID DESC LIMIT 10;

Handler参数

参数解释范围
Handler_commit内部提交语句数GLOBAL
Handler_delete删除行的次数GLOBAL
Handler_discoverMySQL服务器可以询问NDB CLUSTER存储引擎是否知道某一名字的表。这被称作发现。Headler_discover说明通过该方法发现的次数。GLOBAL
Handler_external_lock此变量与锁操作数量有关,主要是在表访问的开始和结束起作用。GLOBAL
Handler_mrr_init服务器使用存储引擎自己实现的多范围读取的次数。GLOBAL
Handler_prepare用于两阶段提交操作的准备阶段计数器。GLOBAL
Handler_read_first索引中第一条被读取的次数SESSION
Handler_read_key根据键读取一行的请求数。此选项数值如果很高,那么恭喜你,你的系统高效的使用了索引,一切运转良好。SESSION
Handler_read_last根据键读取最后一行的请求数。SESSION
Handler_read_next根据键读下一行的请求数。如果查询语句中使用范围约束或索引扫描来查询索引列,该值增加。SESSION
Handler_read_prev根据键顺序读前一行的请求数。该读取方式主要用于优化ORDER BY ... DESCSESSION
Handler_read_rnd根据固定位置读一行的请求数。如果你正执行大量查询并需要对结果进行排序该值较高,那么你可能使用了大量全表扫的的查询或你的连接没有正确使用索引。SESSION
Handler_read_rnd_next在数据文件中读下一行的请求数。如果你正在进行大量的表扫描,该值较高。通常说明你的表索引不正确或写的语句没有利用到索引。SESSION
Handler_rollbackROLLBACK语句的数量GLBOAL
Handler_savepoint在一个存储引擎放置一个保存点的请求数量。GLOBAL
Handler_savepoint_rollback在一个存储引擎的要求回滚到一个保存点的请求数量。GLOBAL
Handler_update更新表中一行数据的次数。GLOBAL
Handler_write插入一行数据的次数。GLOBAL
Handler_read_first

The number of times the first entry was read from an index. If this value is high, it suggests that the server is doing a lot of full index scans; for example, SELECT col1 FROM foo, assuming that col1 is indexed.

此选项表明SQL是在做一个全索引扫描,注意是全部,而不是部分,所以说如果存在WHERE语句,这个选项是不会变的。如果这个选项的数值很大,既是好事 也是坏事。说它好是因为毕竟查询是在索引里完成的,而不是数据文件里,说它坏是因为大数据量时,简便是索引文件,做一次完整的扫描也是很费时的。

最后

不同平台,不同版本的MySQL,在运行上面例子的时候,Handler_read_*的数值可能会有所不同,这并不要紧,关键是你要意识到 Handler_read_*可以协助你理解MySQL处理查询的过程,很多时候,为了完成一个查询任务,我们往往可以写出几种查询语句,这时,你不妨挨 个按照上面的方式执行,根据结果中的Handler_read_*数值,你就能相对容易的判断各种查询方式的优劣。

相关内容

MySQL优化:https://blog.csdn.net/weixin_43932609/article/details/106156679
MySQL优化工具之Show profiles详解:
https://blog.csdn.net/weixin_43932609/article/details/108170328

=========================================================

人生得意须尽欢,莫使金樽空对月!
__一个热爱说唱的程序员。

=========================================================

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

像豆芽一样优秀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值