位置: 编程技术 - 正文

MYSQL神秘的HANDLER命令与实现方法(mysql handshake)

编辑:rootadmin

推荐整理分享MYSQL神秘的HANDLER命令与实现方法(mysql handshake),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql chm,mysql秘密,mysql mmm,mysql ha,mysql mmm,mysql handshake,mysqlmha,mysql秘密,内容如对您有帮助,希望把文章链接给更多的朋友!

MySQL“自古以来”都有一个神秘的HANDLER命令,而此命令非SQL标准语法,可以降低优化器对于SQL语句的解析与优化开销,从而提升查询性能。看到这里,可能有小伙伴不淡定了,这么好的东西为啥没广泛使用呢?这不是与几年前很夯的handlersocket插件类似吗?

那么,我们先来看看Handler语法说明:

HANDLER tbl_name OPEN [ [AS] alias]HANDLER tbl_name READ index_name { = | <= | >= | < | > } (value1,value2,…) [ WHERE where_condition ] [LIMIT … ]HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST } [ WHERE where_condition ] [LIMIT … ]HANDLER tbl_name READ { FIRST | NEXT } [ WHERE where_condition ] [LIMIT … ]HANDLER tbl_name CLOSE

首先从语法上看,HANDLER可以通过指定的索引去访问数据。但此语法并不支持DML操作。此外,由于减少了SQL解析,Handler命令的性能真的非常不错,根据Inside君的简单主键测试,Handler命令比SQL要快%~%。测试脚本如下:

在Inside君的C的测试服务器上,线程主键查询跑到了近W QPS,还是非常令人印象深刻的。对比SQL的SELECT查询,整体测试结果如下图所示:

MYSQL神秘的HANDLER命令与实现方法(mysql handshake)

命令HANDLER的主要实现在源码sql_handler.h、sql_handler.cc,设个断点就能观察到具体的流程。MySQL上层及InnoDB存储引擎层主要实现函数入口为:

既然性能不错,为什么在生产环境中并不见到命令HANDLER的使用呢?主要是因为HANDLER命令存在以下几个主要问题:

非一致性读取???返回聚集索引中的所有列(即使是二级索引访问),而不能返回某个具体列二级索引不使用LIMIT关键字,只能返回1行记录知道命令HANDLER的同学,可能会认为HANDLER读取存在脏读问题。因为MySQL官方文档对于HANDLER读取的说明就是这么说的:

The handler interface does not have to provide a consistent look of the data (for example, dirty reads are permitted), so the storage engine can use optimizations that SELECT does not normally permit.然而需要特别注意的是,MySQL文档中准确的说法是可以允许提供不一致的读取。但InnoDB存储引擎的HANDLER实现是支持一致性读取的,Inside君亲测的确不存在脏读问题。当然,源码说明一切,可以发现在函数init_table_handle_for_HANDLER会对READVIEW进行分配,而注释也说明了这点:

/* We let HANDLER always to do the reads as consistent reads, evenif the trx isolation level would have been specified as SERIALIZABLE */m_prebuilt->select_lock_type = LOCK_NONE;m_prebuilt->stored_select_lock_type = LOCK_NONE;

貌似用HANDLER命令来做主键的查询是不错的,减少了SQL解析器的开销,性能提升杠杠的。但为此,应用要付出巨大的改动,而SQL最大的优势就在于标准化。相信这也是目前NoSQL数据库遇到的最大的一个问题。比如MongoDB,Inside君每次写查询时都要打开官方的命令对照表……

全面解析Windows下安装 mysql5.7的方法 关于在windows下安装mysql5.7要注意的新坑:5.7版本安装后ROOT账号是有默认的密码的,这个密码在windows下可以在mysql.ini配置文件指定的data文件夹下面,那

MySQL索引用法实例分析 本文实例分析了MySQL索引用法。分享给大家供大家参考,具体如下:MYSQL描述:一个文章库,里面有两个表:category和article。category里面有条分类数据。

MySQL数据库优化技术之配置技巧总结 本文实例讲述了MySQL数据库优化技术的配置方法。分享给大家供大家参考,具体如下:(一)减少数据库访问对于可以静态化的页面,尽可能静态化对一个

标签: mysql handshake

本文链接地址:https://www.jiuchutong.com/biancheng/347926.html 转载请保留说明!

上一篇:MySQL 5.6 & 5.7最优配置文件模板(my.ini)(mysql 5.6 5.7 性能)

下一篇:全面解析Windows下安装 mysql5.7的方法(全面解析皮炎)

  • SQL Server 2008用'sa'登录失败,启用'sa'登录的解决办法

    3.右键实例-->【重新启动】

    4.选择【安全性】-->【登录名】-->【sa】

    5.双击【sa】,出现下面视图,点击【常规】,设置新的密码

    Notice: Undefined index: CMSdown in /data/webroot/gcms/lib/Api/Open/Article.php on line img////_a1ad.png" class="img-responsive" alt="SQL Server 2008用'sa'登录失败,启用'sa'登录的解决办法">

    SQL Server 2008用'sa'登录失败,启用'sa'登录的解决办法

  • mysql 5.7.18 winx64 免安装 配置方法

    mysql 5.7.18 winx64 免安装 配置方法

  • Windows Server 2003服务器安全设置

    Windows Server 2003服务器安全设置

  • Windows右下角安全中心警报的标志怎么关闭(电脑右下角windows设置在哪)

    Windows右下角安全中心警报的标志怎么关闭(电脑右下角windows设置在哪)

  • u盘安装Linux系统(Linux镜像通过U盘进行安装)的步骤(u盘安装linux系统遇到的问题)

    u盘安装Linux系统(Linux镜像通过U盘进行安装)的步骤(u盘安装linux系统遇到的问题)

  • swimsuitnetwork.exe - swimsuitnetwork是什么进程 有何作用

    swimsuitnetwork.exe - swimsuitnetwork是什么进程 有何作用

  • bat使用forfiles自动批量删除过期文件(bat for do)

    bat使用forfiles自动批量删除过期文件(bat for do)

  • 在批处理文件中使用参数的方法(批处理文件中echo什么意思)

    在批处理文件中使用参数的方法(批处理文件中echo什么意思)

  • 累计交税如何计算?
  • 申报表货物及劳务是什么
  • 独立法人和法人独资的区别
  • 永久性差异什么是暂时性差异
  • 减少注册资金的理由有哪些
  • 买一送一的营销好处
  • 工程前期土地平整的会计分录怎么写?
  • 公司股东可以自己买保险吗
  • 银行对个人借款的处理
  • 企业接受捐赠是营业收入吗
  • 公司外部人员可以直接在公司报销吗
  • 应付职工薪酬存在的意义
  • 国税局网上申报
  • 个体工商户3万以下免个人经营所得税吗
  • 汇算清缴后如何进行调帐处理
  • 清算时土地增值税计税依据
  • 以前年度损益调整怎么用
  • 资源费用怎么算
  • 商品进销差价如何结平
  • 工程管理咨询费计入什么科目
  • 自行生产的存货转固定资产怎么做账
  • 鸿蒙系统大文件夹怎么调节大小
  • 财政拨款收入属什么科目
  • 电脑中毒了怎么弄
  • 在禁用uac时无法激活什么原因
  • 保险委托支付
  • 个人非货币性资产投资个人所得税
  • 债券利息计算表
  • 厂房改造支出可以计入厂房价值吗
  • chatgpt的多种免费使用方式
  • 亚伯拉罕湖中的树,加拿大艾伯塔 (© Coolbiere/Getty Images)
  • 其他权益工具投资公允价值变动计入什么科目
  • Vue3 script setup 语法糖详解
  • yolo算法百度百科
  • wrap激活
  • 事业结余对应政府会计哪个科目
  • 来料加工企业的税率是多少
  • 增值税多交了五万怎么办
  • 残次品生产成本计算
  • 支付劳务费未开具发票
  • 电脑入账如何做凭证
  • 小规模纳税人的条件
  • 中小企业应交税费怎么算
  • 农民专业合作社法
  • 支付水电费会计
  • 收到在建工程会计分录
  • 收到个人款怎么做分录
  • 进项税税额是多少
  • 房屋租赁费交什么税
  • 税控盘服务费抵扣
  • 公司购买汽车怎么做账记账凭证
  • 公司增资认缴
  • Mysql 5.7.19 winx64 ZIP Archive 安装及使用过程问题小结
  • mysql 模型
  • centos 命令
  • 在64位的Ubuntu系统上安装32位的WPS的方法
  • 桌面开始菜单跑到右边去了怎么办
  • mcappins.exe - mcappins进程是什么文件 什么意思.
  • post installation
  • win7怎么设置u盘启动为第一启动项
  • js运算符种类
  • 构造函数中super()的作用
  • bootstrap基础
  • 自动关机的
  • 如何使用css设置元素的层叠效果?
  • js判断输入用户名是否正确
  • 批处理程序删除文件夹中临时文件
  • npm 发布组件
  • python简单gui
  • actionscript与javascript的区别
  • javascript面向对象精要pdf下载
  • 贵州电子税务局怎么登录
  • 保定市国税局车管所所长
  • 宿豫区国税分局电话
  • 江苏增值税电子专用发票可以抵扣吗
  • 国家减免的增值税怎么做账
  • 技术合同备案要求
  • 企业所得税汇算清缴账务处理
  • 乳胶枕属于什么经营范围
  • 徐州国税局班子成员名单
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设