Tagged: HandlerSocket RSS

  • bixuan 13:48 on 2011 年 03 月 05 日 链接地址 | 回复
    Tags: HandlerSocket, ,   

    安装php-handlersocket 

    至于HandlerSocket的安装请参考:MySQL+HandlerSocket安装一文。

    安装php-handlersocket一开始还遇到了点小问题,说找不到-Ihsclient的库文件,估计是我安装HandlerSocket-Plugin的时候指定了prefix,而在编译php-handlersocet的时候没加环境导致的,后来为了偷懒,就直接安装到/usr/local了。

    wegt -c http://php-handlersocket.googlecode.com/files/php-handlersocket-0.0.7.tar.gz
    tar zxvf php-handlersocket-0.0.7.tar.gz
    cd php-handlersocket
    PREFIX=/opt/app
    $PREFIX/php5-fastcgi/bin/phpize
    ./configure --with-handlersocket \
    --with-handlersocket-includedir=$PREFIX/HandlerSocket-Plugin/include/handlersocket \
    --with-php-config=$PREFIX/php5-fastcgi/bin/php-config
    make && make install
    cd ..

    然后将extension=”handlersocket.so”加到php,ini配置即可。

     
  • bixuan 22:02 on 2011 年 01 月 04 日 链接地址 | 回复
    Tags: HandlerSocket, ,   

    3个HandlerSocket的PHP扩展 

    Percona源码目录storage/HandlerSocket-Plugin-for-MySQL翻到目前有以下3个PHP扩展:

    http://openpear.org/package/Net_HandlerSocket
    http://github.com/tz-lom/HSPHP
    http://code.google.com/p/php-handlersocket/

    特地整理下。

     
  • bixuan 10:36 on 2010 年 12 月 16 日 链接地址 | 回复
    Tags: HandlerSocket, , ,   

    Percona Server 支持 HandlerSocket 

    Percona 前天推出的 Percona Server 5.1.52-12.3 宣佈支援 HandlerSocket,在 InnoDB 的基礎上面提供 memcached 等級的效能… (不過還不曉得在碰到 I/O 時會掉多少)

    HandlerSocket 拿 InnoDB 當作 Key-Value store 的底層,需要的時候還可以透過上層的 SQL 存取,然後 Percona 也跳下去,因為現有的資料庫就可以拿來用,可以預期會有很多人跳下去玩…

    From:http://blog.gslin.org/archives/2010/12/15/2386/percona-server-%E6%94%AF%E6%8F%B4-handlersocket

     
  • bixuan 11:26 on 2010 年 11 月 24 日 链接地址 | 回复
    Tags: HandlerSocket, ,   

    HandlerSocket的php扩展已出,太棒了,一会就测试下~

    http://code.google.com/p/php-handlersocket/

     
    • peter 10:31 on 2010 年 12 月 01 日 链接地址

      测试结果呢?

    • bixuan 23:31 on 2010 年 12 月 03 日 链接地址

      还没测试,sorry

    • silentime 00:53 on 2010 年 12 月 09 日 链接地址

      多多交流,这是我安装的记录,周边的扩展还不是很完备http://blog.sina.com.cn/s/blog_550ffb0b0100nowb.html

  • bixuan 00:19 on 2010 年 11 月 22 日 链接地址 | 回复
    Tags: HandlerSocket, , , VoltDB   

    一般认为NoSQL数据库在性能方面要优于传统的SQL数据库。但是有两个SQL的解决方案宣布:对于大型系统的高可扩展性需求,SQL仍然是可行的解决方案!这两个SQL解决方案分别是MySQL加NoSQL层插件和支持SQL的VoltDB数据库。

    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是不需要做这些额外工作的。

    SQL层的功能包括解析SQL语句、打开/锁定/解锁/关闭表、解决并发问题等。Matsunobu的解决方案就是增加额外的NoSQL层:

    我们认为最好的方式就是在MySQL内部实现一个NoSQL的网络服务器。也就是说,编写一个网络服务器作为MySQL的插件(守护插件),用来监听特定端口,接收NoSQL的协议和API,然后通过MySQL内部存储引擎API直接访问InnoDB。这种方式很像NDBAPI,不同的是它可以与InnoDB交互。

    他的团队开发了HandlerSocket插件,有了这个插件,MySQL更像一个NoSQL数据库,通过监听一个独立的端口,接收从SQL层来的简单查询请求,例如主键查询,索引扫描和插入/更新/删除。这一变化把数据库性能提升到了750K qps以上。常用端口可以接收处理复杂查询,其核心仍然是SQL数据库。DeNA采用SQL/NoSQL混合的方式取得了成功,据Matsunobu所言,在相同的时间内,这种解决方案把多个memcached和MySQL主从服务器的方案远远甩在了后面。

    VoltDB

    另一个很有希望的SQL解决方案是VoltDB,这是一个内存中的开源OLTP SQL数据库,能够保证事务的完整性(ACID)。VoltDB是由原Ingres和Postgres的架构师Mike Stonebraker设计的。该数据库主要特征如下:

    • 为了获得最大化吞吐量,数据保存在内存中(而不是在硬盘),这样可以有效消除缓冲区管理。
    • VoltDB通过SQL引擎把数据分发给集群服务器的每个CPU进行处理。
    • 每个单线程分区自主执行,消除锁定和闩锁的需求。
    • VoltDB可以通过简单的在集群中增加附加节点的方式实现性能的线性增加。

    正如其开发者宣称的那样,该数据库的性能使其成为NoSQL解决方案的有力竞争者:

    • VoltDB在单节点上可以每秒处理53000个事务请求(TPS),其他DBMS在相同的硬件环境下只能处理1155个。VoltDB的扩展是近似线性的──在12个节点的VoltDB集群上进行同样测试,可以处理560,000 TPS。
    • 基准案例:某个客户的在线游戏在12个节点的VoltDB集群上处理了130万 TPS。
    • VoltDB还针对NoSQL的键-值存储方式作了基准测试,VoltDB在处理各种键-值存储负载的情况下获得了相同或更好的性能。

    除了它的性能,VoltDB的主要优势是可以与SQL用户进行交流,这些SQL用户是很好的资源。

    近期还会推出VoltDB的企业版本,包括基于浏览器的数据库管理系统,提供、管理和监控数据库集群。除了免费的社区版本,针对企业版的支持也开始了。

    查看英文原文:MySQL/HandlerSocket and VoltDB: Contenders to NoSQL

    From: http://hi.baidu.com/%CA%AB%D5%B9/blog/item/30e9aed38d3af024960a1649.html

     
  • bixuan 03:22 on 2010 年 11 月 01 日 链接地址 | 回复
    Tags: HandlerSocket,   

    MySQL+HandlerSocket安装 

    HandlerSocket是啥东东,请参看http://www.ourlinux.net/database/using-mysql-as-a-nosql-a-story-for-exceeding-750000-qps-on-a-commodity-server/,做个简单的摘记:

    下载

    wget -c http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.51.tar.gz/from/http://ftp.jaist.ac.jp/pub/mysql/

    wget -c http://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL/tarball/master

    安装Mysql

    PREFIX=/opt/app
    tar zxvf mysql-5.1.51.tar.gz
    cd mysql-5.1.51
    ./configure  –prefix=$PREFIX/mysql-5.1.51 –enable-assembler –with-client-ldflags=-all-static –with-unix-socket-path=/tmp/mysql.sock –with-charset=utf8  –enable-thread-safe-client –with-pthread  –without-debug –with-big-tables  –enable-community-features –enable-profiling  –enable-local-infile  –with-fast-mutexes  –with-plugins=innobase,innodb_plugin && \
    make -j 5 && \
    strip sql/mysqld && \
    make install && \
    cd $PREFIX/mysql-5.1.51 && \
    bin/mysql_install_db –user=mysql && \
    cd ..

    安装HandlerSocket

    tar zxvfp ahiguti-HandlerSocket-Plugin-for-MySQL-a25ce9a.tar.gz && \
    cd ahiguti-HandlerSocket-Plugin-for-MySQL-a25ce9a && \
    ./autogen.sh
    ./configure –prefix=$PREFIX/HandlerSocket-Plugin –with-mysql-source=/home/kingnet/mysql/mysql-5.1.51 –with-mysql-bindir=$PREFIX/mysql-5.1.51/bin  –with-mysql-plugindir=$PREFIX/mysql-5.1.51/lib/mysql/plugin && \
    make && make install
    在mysql里加载HandlerSocket插件:
    mysql> INSTALL PLUGIN handlersocket SONAME ‘handlersocket.so’;
    mysql>SHOW PLUGINS; # 查看插件是否加载成功
    在my.cnf的[mysqld]加如下配置:
    loose_handlersocket_port = 9998
    # the port number to bind to (for read requests)
    loose_handlersocket_port_wr = 9999
    # the port number to bind to (for write requests)
    loose_handlersocket_threads = 16
    # the number of worker threads (for read requests)
    loose_handlersocket_threads_wr = 1
    # the number of worker threads (for write requests)
    open_files_limit = 65535

    安装perl模块

    cd libhsclient && \
    rsync -av ./*.hpp /usr/include/
    # 需要将必要的include文件copy到系统目录。
    cd ../perl-Net-HandlerSocket/
    perl Makefile.PL && \
    make && \
    make test && \
    make install

    perl测试脚本

    #!/usr/bin/perl
    use strict;
    use warnings;
    use Net::HandlerSocket;
    #1. establishing a connection
    my $args = { host => ’192.168.4.75′, port => 9998 };
    my $hs = new Net::HandlerSocket($args);
    #2. initializing an index so that we can use in main logics.
    # MySQL tables will be opened here (if not opened)
    my $res = $hs->open_index(0, ‘test’, ‘user’, ‘PRIMARY’,
    ‘user_name,user_email,created’);
    die $hs->get_error() if $res != 0;
    #3. main logic
    #fetching rows by id
    #execute_single (index id, cond, cond value, max rows, offset)
    $res = $hs->execute_single(0, ‘=’, [ '101' ], 1, 0);
    die $hs->get_error() if $res->[0] != 0;
    shift(@$res);
    for (my $row = 0; $row < 1; ++$row) {
    my $user_name= $res->[$row + 0];
    my $user_email= $res->[$row + 1];
    my $created= $res->[$row + 2];
    print “$user_name\t$user_email\t$created\n”;
    }
    #4. closing the connection
    $hs->close();
    执行:perl t.pl,返回:
    bi_101  bi_101@test.com      2010-10-26 10:11:11
     
  • bixuan 14:12 on 2010 年 10 月 26 日 链接地址 | 回复
    Tags: HandlerSocket,   

    Using MySQL as a NoSQL – A story for exceeding 750,000 qps on a commodity server 

    原文:http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html
    相关的日文PPT:http://www.slideshare.net/akirahiguchi/handlersocket-plugin-for-mysql-4664154

    啥也不说了,期待php的扩展出现。

     
c
写新的
j
下一篇文章/下一个回复
k
前一篇文章/以前的回复
r
回复
e
编辑
o
显示/隐藏 回复
t
回到顶部
l
go to login
h
show/hide help
esc
取消