简述handler机制及其作用_传统金融的优势与缺点

简述handler机制及其作用_传统金融的优势与缺点From:http://www.mysqlops.com/2011/10/20/handlersocket-adv.htmlHandlerSocket的优势和特点:1)        支持多种查询模式HandlerSocket目前支持索引查询(主键索引和非主键的普通索引均可),索引范围扫描,LIMIT子句,也即支持增加、删除、修改、查询完整功能,但还不支持无法使用任何索引

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

From:http://www.mysqlops.com/2011/10/20/handlersocket-adv.html

HandlerSocket的优势和特点:

1)         支持多种查询模式

HandlerSocket目前支持索引查询(主键索引和非主键的普通索引均可),索引范围扫描,LIMIT子句,也即支持增加、删除、修改、查询完整功能,但还不支持无法使用任何索引的操作。另外支持execute_multi() 一次网络传输多个Query请求,节省网络传输时间。

2)         处理大量并发连接

HandlerSocket的连接是轻量级的,因为HandlerSocket采用epoll() 和worker-thread/thread-pooling架构,而MySQL内部线程的数量是有限的(可以由my.cnf中的handlersocket_threads/handlersocket_threads_wr参数控制),所以即使建立上千万的网络连接到HandlerSocket,也不会消耗很多内存,它的稳定性不会受到任何影响(消耗太多的内存,会造成巨大的互斥竞争等其他问题,如bug#26590,bug#33948,bug#49169)。

3)         优秀的性能

HandlerSocket的性能见文章HandlerSocket的性能测试报告描述,相对于其它NoSQL产品,性能表现一点也不逊色,它不仅没有调用与SQL相关的函数,还优化了网络/并发相关的问题:

(1).     更小的网络数据包:和传统 MySQL 协议相比,HandlerSocket 协议更简短,因此整个网络的流量更小。

(2).     运行有限的MySQL内部线程数:参考上面的内容。

(3).     将客户端请求分组:当大量的并发请求到达HandlerSocket时,每个工作线程尽可能多地聚集请求,然后同时执行聚集起来的请求和返回结果。这样,通过牺牲一点响应时间,而大大地提高性能。例如,可以减少fsync()调用的次数,减少复制延迟。

 

4)         无重复缓存

当使用Memcached缓存MySQL/InnoDB记录时,在Memcached和InnoDB Buffer Pool中均缓存了这些记录,因此效率非常低(实际上有两份数据,Memcached本身可能还需要做HA支持),而采用 HandlerSocket插件, 它直接访问 InnoDB 存储引擎,记录缓存在InnoDB Buffer Pool,于是其它SQL语句还可以重复使用缓存的数据。

5)         无数据不一致的现象

由于数据只存储在一个地方(InnoDB存储引擎缓存区内),不像使用Memcached时,需要在Memcached和MySQL之间维护数据一致性。

6)         崩溃安全

后端存储是InnoDB引擎,支持事务的ACID特性,能确保事务的安全性,即使设置innodb_flush_log_at_trx_commit=2,若数据库服务器崩溃时,也只会丢掉<= 1s的数据。

7)         SQL/NOSQL并存

在许多情况下,我们仍然希望使用SQL(例如复杂的报表查询),而大多数NoSQL产品都不支持SQL接口,HandlerSocket仅仅是一个 MySQL 插件,我们依然可以通过MySQL客户端发送SQL语句,但当需要高吞吐量和快速响应时,则使用 HandlerSocket。

8)         继承MySQL的功能

因为HandlerSocket运行于MySQL,因此所有MySQL的功能依然被支持,例如:SQL、在线备份、复制、HA、监控等等。

9)         不需要修改/重建MySQL

因为HandlerSocket是一个插件并且开源,所以它支持从任何MySQL源码、甚至是第三方版本(例如Percona)构建,而无需对MySQL做出任何修改。

10)     独立于存储引擎

虽然我们只测试了MySQL-EnterpriseInnoDB和Percona XtraDB插件,但HandlerSocket理论上可以和任何存储引擎交互。MyISAM通过简单的修改也是可以被支持的,但是从数据缓存而利用内存的角度看这个意义不大。

HandlerSocket的缺陷和注意事项

1)         协议不兼容

HandlerSocket API与Memcached API并不兼容,尽管它很容易使用,但仍然需要一点学习来学会如何与HandlerSocket交互。不过我们可以通过重载Memecached函数来翻译到HandlerSocket API。

2)         没有安全功能

与其它NoSQL数据库类似,HandlerSocket不支持安全功能,HandlerSocket的工作线程以系统用户权限运行,因此应用程序可以通过HandlerSocket协议访问所有的表对象,但是可以通过简单的修改协议,在my.cnf中增加一个配置项为密码,连接时通过这个配置的密码验证,当然也可以通过网络防火墙来过滤数据包。

3)         对于磁盘IO密集的场景没有优势

对于IO密集的应用场景,数据库每秒无法执行数千次查询,通常只有1-10%的CPU利用率,在这种情况下,SQL解析不会成为性能瓶颈,因此使用HandlerSocket没有什么优势,应当只在数据完全装载到内存的服务器上使用 HandlerSocket。但是对于PCI-E SSD(例如Fusion-IO)设备,每秒可以提供4w+ IOPS,并且IO设备本身消耗CPU比较大,使用HandlerSocket依然具有优势。

编者注

为方便读者更加全面掌握HandlerSocket的知识点,我们分三篇文章介绍:HandlerSocket的原理HandlerSocket的性能测试报告、HandlerSocket的优势和缺陷阐述,同时帮助读者朋友做到心中有数,什么业务场景适合使用HandlerSocket存取数据,如何让HandlerSocket的优势发挥到极致。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172633.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何搭建自己的SpringBoot源码调试环境? SpringBoot源码(一)「建议收藏」

    如何搭建自己的SpringBoot源码调试环境? SpringBoot源码(一)「建议收藏」1前言这是SpringBoot2.1源码分析专题的第一篇文章,主要讲如何来搭建我们的源码阅读调试环境。如果有经验的小伙伴们可以略过此篇文章。2环境安装要求IntelliJIDEAJDK1.8Maven3.5以上3从github上将SpringBoot源码项目下载下来首先提供SpringBoot2.1.0的github地址:点这里下载因为要进行阅读源码和分析源码项目,我们是不是要在里面写一些注释帮助我们阅读理解源码,因此需要将SpringBoot源码项目fork到自己的github

    2022年5月8日
    101
  • 本地化测试

    本地化测试

    2021年8月14日
    66
  • jquery setinterval_jquery validate

    jquery setinterval_jquery validate今天在使用jQuery的setInterval时总是不能成功,在网上找了一下,发现别人的也有很多错误,最后发现了setInterval的使用方法。下面上整个代码,如果要使用,要自己加入jQuery包:$(function(){  setInterval(showTime,2000); functionshowTime() {     vartoda

    2025年9月30日
    5
  • flocked翻译_physicked翻译

    flocked翻译_physicked翻译FleckisaWebSocketserverimplementationinC#.BranchedfromtheNuggetproject,Fleckrequiresnoinheritance,container,oradditionalreferences.ExampleThefollowingisanexamplethatwillecho…

    2025年6月21日
    2
  • ADMM算法简介_RMA算法

    ADMM算法简介_RMA算法前言这篇博客旨在介绍下最近在通信中经常用到的ADMM算法。算法的全称为AlternatingDirectionMethodofMultipliers,中文直译为:交替方向乘子法。本文的参考文献为Boyd的经典著作:DistributedOptimizationandStatisticalLearningviatheAlternatingDirectionMethodofMultipliers,事实上从名字就可以看出,正如Boyd在摘要中所提到的,AD

    2025年7月22日
    3
  • C语言逗号运算符_c语言逗号运算符优先级最低

    C语言逗号运算符_c语言逗号运算符优先级最低逗号也是运算符?是的,但是其实我更愿意说它是分隔符。在C语言中我们就经常使用逗号,看似逗号是非常平凡的分隔符,但是它关联到一个你必须知道但可能未曾思考的小知识:理论上,每条语句(分号结束),最终都会转换成一个值。例子1:#include<stdio.h>intmain(){ 3,4,5;//这是一条语句 //把上面这条语句的值赋值给变量a inta=(3,4,5); printf(“a=%d\n”,a);}输出结果:a=5因为a的值是整条语句的值,

    2025年7月15日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号