简述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)
上一篇 2022年8月24日 上午9:46
下一篇 2022年8月24日 上午9:46


相关推荐

  • idea部署Web工程到tomcat

    idea部署Web工程到tomcat创建 web 工程首先在 idea 中创建一个 web 工程其中 web 目录下用于存放 html jsp 文件在 WEB INF 下创建一个 classes 和 lib 用来存放 tomcat 的 jar 包点击右上角图标配置 tomcat 路径进入找到选择刚创建的 lib 文件完成之后保存再去配置 tomcatTomcat 配置点击上方菜单里的运

    2026年3月18日
    3
  • Java继承

    Java继承一:继承的概述1.继承的定义继承:就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。–注:父类又称为超类或者基类。子类又称为派生类!2.继承的格式通过 extends 关键字,可以声明一个子类继承另外一个父类,定义格式如下:class父类{…}class子类extends父类{…}二、关于继承之后的成员变量1.当成员变量不重名如果子类父类中出现不重名的成员变量,这时的访问是没有影

    2022年7月7日
    19
  • PHP内置服务器

    PHP内置服务器

    2021年10月17日
    54
  • 反射型XSS案例[通俗易懂]

    反射型XSS案例[通俗易懂]原理:可能存在反射型xss的功能(点):url参数,搜索框…挖掘方法:需要url中有可以修改的参数过滤方法:在后端使用函数过滤标签

    2022年5月3日
    78
  • Ubuntu安装deb包

    Ubuntu安装deb包原文 http www cnblogs com longyuan z p 7739864 html 在 Ubuntu 下安装 deb 包需要使用 dpkg 命令 Dpkg 的普通用法 1 sudodpkg i package deb 安装一个 Debian 软件包 如你手动下载的文件 2 sudodpkg c package deb 列出 package deb package deb

    2026年3月26日
    3
  • matlab柱状图显示百分比_两年数据对比柱形图matlab

    matlab柱状图显示百分比_两年数据对比柱形图matlab这个小代码用于matlab柱状图显示比例及数值,函数如下:functionmyhist(x)%myhistCodebySimonLiang%Email:idignew@126.com%用于显示柱状图比例及具体数值h=histogram(x);holdon;%显示柱状图数值hBin=h.BinEdges(1:end-1)+h.B…

    2022年10月7日
    6

发表回复

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

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