位置: 编程技术 - 正文

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的方法(全面解析皮炎)

  • 使用增值税发票的条件
  • 企业股东分红怎么交税
  • 销售货物应税劳务服务清单给客户一份是不是就可以了
  • 电子税务局如何变更财务负责人
  • 普通发票被作废的话财务会发现吗
  • 冲红的发票要拿回来吗
  • 增值税不达起征点处理
  • 红字专用发票信息表用什么纸打印
  • 净资产增加额计算公式
  • 异地开发房地产会一直待在那个城市吗
  • 应税劳务和应税服务不合理列支的有哪些
  • 投资性房地产处置时为什么要结转其他综合收益
  • 购房所需的税费种类和费用
  • 本月做未开票收入,下月开票怎么做账
  • 公司股东可以自己买保险吗
  • 景区门票入什么费用
  • 小微企业减免所得税
  • 加计扣除10%进项税账务处理 如何填表
  • 付工程款现金怎么做凭证?
  • 去年亏损今年第一季度盈利
  • 购买原材料并作会计分录
  • 关于解决经费问题的请示
  • 电脑隐藏软件图标快捷键
  • 国库年终总结
  • 研发费用的归集范围
  • windows10自带桌面时钟
  • 中专学历可以报成人本科吗
  • 没有取得发票的成本可以税前扣除吗
  • 分析卡拉哈迪沙漠的形成原因
  • 个体工商户年报逾期怎么办
  • yii框架入门
  • 提交表单后重定向
  • 一般纳税人公司出售旧车怎么开票
  • 嵌入式从业10年,聊聊我对工业互联网和消费物联网的看法 | 文末赠书4本
  • tune a video:one-shot tuning of image diffusion models for text-to-video generation
  • 其他应收款等于
  • nodejs基础知识
  • 人才引进的安家费
  • 消耗性生物资产的账务处理
  • 个人所得税既有工资薪金又有劳务报酬房屋租金
  • php生成器和迭代器理解
  • 短期投资理财是
  • 递延收益与预收收益区别
  • 异地交税怎么交
  • SQL Server 2008 R2 超详细安装图文教程
  • 火车票可以抵扣进项税
  • 个人代人开普票个税怎么算
  • 存货的计税基础公式
  • 期末结转会计分录总结
  • 外国企业常驻代表机构
  • 分期购车会计分录小规模
  • 投资性房地产递延所得税其他综合收益
  • 错账查找方法主要有
  • 如何理解应收账款平均余额
  • 关联方交易舞弊手段
  • 租赁房屋期间发生事故谁负责
  • windons10安装
  • 不用鲁大师
  • 注册表出错打不开程序
  • windows server 2012将计算机图标添加到桌面(图文教程)
  • The file /boot/grub/stage1 not read cor 解决办法
  • win8图标放桌面
  • linux系统的服务器
  • win7怎么删除右键菜单
  • win8桌面在c盘的路径
  • 怎么用windows
  • 第一个闹钟
  • cocos2d CC_CALLBACK_0/1/2/3之间的区别
  • shell 多个文件合并
  • python的linux
  • unity核心模块
  • unity 3d脚本编程
  • linux命令行常用操作
  • unity3d开发之对象池
  • jquery fadein不起作用
  • 瀑布流水风景图片
  • 四川省国家税务局电子税务局
  • 如何在电子税务局看本月应申报的税
  • 什么叫银税互动
  • 浙江农村医保手机上怎么缴费
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设