iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >如何理解MySQL handler相关状态参数
  • 365
分享到

如何理解MySQL handler相关状态参数

2024-04-02 19:04:59 365人浏览 独家记忆
摘要

如何理解Mysql handler相关状态参数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。概述mysql“自古以来”都有一个神秘的HANDL

如何理解Mysql handler相关状态参数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

概述

mysql“自古以来”都有一个神秘的HANDLER命令,而此命令非sql标准语法,可以降低优化器对于SQL语句的解析与优化开销,从而提升查询性能。

如何理解MySQL handler相关状态参数

一、Handler参数列表

mysql> show global status like 'Handle%';

如何理解MySQL handler相关状态参数

参数介绍如下:

如何理解MySQL handler相关状态参数

如何理解MySQL handler相关状态参数

二、实际优化中比较看重的几个参数

1. Handler_read_first和Handler_read_rnd_next

前者表示全索引扫描的次数,当前者值较大,说明可能是一个全索引扫描,此外走全表也可能导致这个值比较大;后者表示在进行数据文件扫描时,从数据文件里取数据的次数。当后者值较大,说明扫描的行非常多,可能没有合理的使用索引

2. Handler_read_key

这个表示走索引的次数,如果这个值比较大,说明索引使用良好

三、实验演示

1. 准备数据

CREATE TABLE test (  id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,  DATA VARCHAR ( 32 ),  ts TIMESTAMP,  INDEX ( DATA ) ); INSERT INTO test VALUES     ( NULL, 'abc', NOW( ) ),     ( NULL, 'abc', NOW( ) ),     ( NULL, 'abd', NOW( ) ),     ( NULL, 'acd', NOW( ) ),     ( NULL, 'def', NOW( ) ),     ( NULL, 'pqr', NOW( ) ),     ( NULL, 'stu', NOW( ) ),     ( NULL, 'vwx', NOW( ) ),     ( NULL, 'yza', NOW( ) ),     ( NULL, 'def', NOW( ) )

2. limit 2观察Handler_read_first、Handler_read_rnd_next、Handler_read_key

FLUSH STATUS; select * from test limit 2; SHOW SESSioN STATUS LIKE 'handler_read%'; explain select * from test limit 2;

如何理解MySQL handler相关状态参数

可以看到全表扫描其实也是走了key(Handler_read_key=1),可能是因为索引组织表的原因。因为limit 2  所以rnd_next为2.这个Stop Key在执行计划中是看不出来的。

3. 索引消除排序(升序),只走索引

FLUSH STATUS; select data from test order by data limit 4; SHOW SESSION STATUS LIKE 'handler_read%'; explain select data from test order by data limit 4;

如何理解MySQL handler相关状态参数

使用索引消除排序,因为是升序,所以read first为1,由于limit  4,所以read_next为3,因为只从索引拿,不从数据文件里取数据所以rnd_next为0,索引通过这个可以看出Stop Key.

4. 索引消除排序(倒序)

FLUSH STATUS; select data from test order by data desc limit 3; SHOW SESSION STATUS LIKE 'handler_read%'; explain select data from test order by data desc limit 3;

如何理解MySQL handler相关状态参数

使用索引消除排序,因为是倒序,所以read_last为1,read_prev为2.因为往回读了两个key.

5. 没有使用索引

ALTER TABLE test ADD COLUMN file_sort text; UPDATE test SET file_sort = 'abcdefghijklmnopqrstuvwxyz' WHERE id = 1; UPDATE test SET file_sort = 'bcdefghijklmnopqrstuvwxyza' WHERE id = 2; UPDATE test SET file_sort = 'cdefghijklmnopqrstuvwxyzab' WHERE id = 3; UPDATE test SET file_sort = 'defghijklmnopqrstuvwxyzabc' WHERE id = 4; UPDATE test SET file_sort = 'efghijklmnopqrstuvwxyzabcd' WHERE id = 5; UPDATE test SET file_sort = 'fghijklmnopqrstuvwxyzabcde' WHERE id = 6; UPDATE test SET file_sort = 'ghijklmnopqrstuvwxyzabcdef' WHERE id = 7; UPDATE test SET file_sort = 'hijklmnopqrstuvwxyzabcdefg' WHERE id = 8; UPDATE test SET file_sort = 'ijklmnopqrstuvwxyzabcdefgh' WHERE id = 9; UPDATE test SET file_sort = 'jklmnopqrstuvwxyzabcdefghi' WHERE id = 10;  FLUSH STATUS; select * from test order by file_sort limit 4; SHOW SESSION STATUS LIKE 'handler_read%'; explain select * from test order by file_sort limit 4;

如何理解MySQL handler相关状态参数

Handler_read_rnd为4 说明没有使用索引,rnd_next为11说明扫描了所有的数据,read key总是read_rnd+1。

看完上述内容,你们掌握如何理解MySQL handler相关状态参数的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网数据库频道,感谢各位的阅读!

您可能感兴趣的文档:

--结束END--

本文标题: 如何理解MySQL handler相关状态参数

本文链接: https://www.lsjlt.com/news/67978.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何理解MySQL handler相关状态参数
    如何理解MySQL handler相关状态参数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。概述MySQL“自古以来”都有一个神秘的HANDL...
    99+
    2022-10-19
  • MySQL handler相关状态参数有哪些呢
    今天就跟大家聊聊有关MySQL handler相关状态参数有哪些呢,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 Ha...
    99+
    2022-10-19
  • MYSQL INNODB innodb_thread_concurrency相关参数理解
    原创水平有限请谅解 虽然这几个参数我以前也有学习过,但是一直没有在源码级别进行证明,所以一直也没有写,但是今天群里有 朋友问到,所以先按照官方手册的加上我自己的理解进行一下解释,以后一定要在源码级别进行...
    99+
    2022-10-18
  • MySQL慢查询相关参数原理解析
    MySQL的慢查询,全名是慢查询日志,是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阀值的语句。具体环境中,运行时间超过long_query_time值的SQL语句,则会被记录到慢查询日志中。lo...
    99+
    2022-05-15
    MySQL 慢查询 参数
  • MySQL需要关注的参数及状态变量解读
    目录mysql需要关注的参数及状态变量总结MySQL需要关注的参数及状态变量 open_files_limit 操作系统允许mysqld打开的文件数量。 这个值可以设置得比较大,比如50000,最好在系统初始化安装时就设...
    99+
    2023-02-08
    MySQL的参数 MySQL状态变量 MySQL变量
  • 如何优化MySQL参数:达到性能最佳状态
    MySQL参数优化 🐕 参数优化之 Max_connections🦌 参数优化之 key_buffer_size🐘 参数优化之 max_allo...
    99+
    2023-09-30
    mysql 数据库
  • 如何理解MySQL关于表名大小写的参数
    今天就跟大家聊聊有关如何理解MySQL关于表名大小写的参数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 查看现有的大小...
    99+
    2022-10-19
  • 如何进行MySQL环境变量里关于字符集character相关参数的分析
    今天就跟大家聊聊有关如何进行MySQL环境变量里关于字符集character相关参数的分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 ...
    99+
    2022-10-19
  • 如何理解MySQL 8.0中的全局参数持久化
    本篇内容介绍了“如何理解MySQL 8.0中的全局参数持久化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2022-10-18
  • Windows下PHP和NumPy的数据处理:如何解决相关问题?
    在现代数据驱动的世界中,数据处理是任何企业成功的关键。在Windows操作系统下,PHP是一种非常流行的服务器端编程语言,而NumPy是一种高性能的数值计算库。在本文中,我们将探讨如何在Windows下使用PHP和NumPy进行数据处理,...
    99+
    2023-07-23
    windows 大数据 numy
  • 如何使用vbs解决处理TXT文本数据相关问题
    这篇文章主要介绍了如何使用vbs解决处理TXT文本数据相关问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。有个小问题,如下: 现有文本文件1.txt,内容如下: 数值_1出...
    99+
    2023-06-08
  • 如何理解mysql的redo日志参数innodb_log_write_ahead_size中read-on-write
    如何理解mysql的redo日志参数innodb_log_write_ahead_size中read-on-write,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需...
    99+
    2022-10-19
  • 如何理解MySQL执行计划中的各个参数及含义
    这篇文章给大家介绍如何理解MySQL执行计划中的各个参数及含义,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。本文是对于MySQL执行计划的解析,主要解释了...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作