zoukankan      html  css  js  c++  java
  • MySQL+HandlerSocket


    MySQL + HandlerSocket
    Yoshinori Matsunobu是Sun/Oracle的前雇员,从事MySQL的研发工作,目前是DeNA的首席数据库和基础

    设施架构师,他以插件的方式为MySQL/InnoDB提供解决方案,可以在一台2.53GHZ、8核CPU、32G内存的

    Nehalem服务器上把每秒的查询数量(qps)提升到750,000以上。在同样的硬件环境下,无插件的MySQL

    只能提供100,000左右的qps,如果使用memecached的话,可以增加到大约400,000。经过对RDBMS的分析

    ,Matsunobu意识到大部分时间都花在SQL的开销上,比如调用MYSQLparse()、MYSQLlex()、

    make_join_statistics()和JOIN::optimize()等。他写到:

    很显然性能降低的原因主要在SQL层,而不是“InnoDB(存储)”层。MySQL必须做很多事情......但

    memcached/NoSQL是不需要做这些额外工作的。

    参考:
    MySQL/HandlerSocket和VoltDB:NoSQL的竞争者
    http://hi.baidu.com/%CA%AB%D5%B9/blog/item/30e9aed38d3af024960a1649.html


    通常,MySQL Server可以被看成两层架构:即SQL Layer和Storage Engine Layer,它们之间通过

    Handler API进行交互。MySQL Server在接收到客户端的Query请求后,通常需要在SQL layer中进行词法

    分析,语法分析,优化等过程,最终生成一个树型的查询计划,交由执行引擎执行。执行引擎根据查询

    计划,跟相应的存储引擎通信,得到查询结果。
    HandlerSocket的作者认为,对于CPU bound的MySQL server来说,SQL layer消耗了过多的资源,以致总

    体性能不佳。HandlerSocket则绕过了MySQL Server的SQL layer,直接跟存储引擎交互,从而带来了大

    幅的性能提升。默认情况下HandlerSocket Plugin监听9998和9999两个端口,其中9998只支持读操作,

    9999支持读写操作,但是性能跟9998端口相比稍慢。
    参考:
    http://whitesock.javaeye.com/blog/811339

    有人认为目前HandlerSocket还不能跟Memcache比较:
    HandlerSocket is great, but don't compare it to Memcache just yet.
    Dec. 28th, 2010 at 11:34 AM
    The HandlerSocket plugin for MySQL currently lacks atomic operations .  It is impossible to

    implement counters (increment/decrement value) or REPLACE functionality with the current

    implementation. 
    It currently exceeds the performance of Memcache for get/set operations, but I want to see

    how fast it is once atomic operations are implemented. Until then, I don't think it is a

    serious contender for replacing Memcache for the cache layer in a complex environment.

    HandlerSocket性能评测:
    HandlerSocket on SSD
    http://www.mysqlperformanceblog.com/2010/11/02/handlersocket-on-ssd/


    在CentOS 5中安装Percona-Server和HandlerSocket:
    Installing HandlerSocket on CentOS 5 + Percona-Server in Five Easy Steps
    1 – Set up the Percona Yum Repository
    %> rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-

    1.x86_64.rpm
    Additional documentation for other distributions can be found at

    http://www.percona.com/docs/wiki/repositories:start
    2 – Install Percona-Server Packages
    %> yum install Percona-Server-client-51.x86_64 Percona-Server-devel-51.x86_64 Percona-

    Server-server-51.x86_64 Percona-Server-shared-51.x86_64 Percona-Server-shared-compat.x86_64
    3 – Enable the PlugIn in my.cnf by adding the following lines in [mysqld]:
    loose_handlersocket_port = 9998
    loose_handlersocket_port_wr = 9999
    loose_handlersocket_threads = 16
    loose_handlersocket_threads_wr = 1
    open_files_limit = 65535
    4 – Install the PlugIn
    mysql> install plugin handlersocket soname 'handlersocket.so';
    5 – Verify
    The easiest way to verify that HandlerSocket is running is to simply telnet to ports 9998

    and 9999 on the localhost.


    安装参考:
    http://whitesock.javaeye.com/blog/811339
    http://hi.baidu.com/higkoo/blog/item/fdb7a8fc51645deffd037f06.html

    NoSQL:
    NoSQL 是非关系型数据存储的广义定义。它打破了长久以来关系型数据库与 ACID 理论大一统的局面。

    NoSQL 数据存储不需要固定的表结构,通常也不存在连接 操作。在大数据存取上具备关系型数据库无法

    比拟的性能优势。该术语在 2009 年初得到了广泛认同。
    当今的应用体系结构需要数据存储在横向伸缩性 上能够满足需求。而 NoSQL 存储就是为了实现这个需

    求。Google 的 BigTable 与 Amazon 的 Dynamo 是非常成功的商业 NoSQL 实现。一些开源的 NoSQL 体

    系,如Facebook 的 Cassandra , Apache 的 HBase ,也得到了广泛认同。
    参考:
    http://blog.csdn.net/DL88250/archive/2010/01/14/5191092.aspx

  • 相关阅读:
    Eclipse卡顿,内存猛增解决方案
    Oracle 客户端安装配置
    asp.net OnInit、OnLoad、Page_Load、Page_Init父子页面执行顺序探究
    网页下载文件实现方式及技巧
    winform中利用反射实现泛型数据访问对象基类(3)
    winform之自定义控件
    winform中利用反射实现泛型数据访问对象基类(2)
    Winform自定义分页控件的实现
    Combox控件初始化项的技巧
    winform中利用反射实现泛型数据访问对象基类(1)
  • 原文地址:https://www.cnblogs.com/preftest/p/1932751.html
Copyright © 2011-2022 走看看