- 浏览: 268944 次
- 性别:
- 来自: 石家庄
最新评论
-
路小尘:
mark
详解 Java 语言中 float 类型的运算 -
ezerg:
兄弟,你那样写的效果和没写是一样的,因为你没有转换编码。例如从 ...
JDBC 中 DatabaseMetaData 接口的使用 -
yl419440513:
我也用的是这个,可是却被一个问题难住了,就是getString ...
JDBC 中 DatabaseMetaData 接口的使用 -
laijinyan:
我初学请教下不是说 MaxClients 要小于 Server ...
Apache 的 httpd 进程占用大量内存原因及其解决方案 -
ybb896:
,不错
安装和使用 percona 推出的 Xtrabackup 备份 MySQL
一、安装
1、下载 mysql-5.1.54.tar.gz 解压至 /root/mysql/mysql-5.1.54 目录
2、下载 ahiguti-HandlerSocket-Plugin-for-MySQL-1.0.6-94-g98b14c3.tar.gz 解压至 /root/mysql/ahiguti-HandlerSocket-Plugin-for-MySQL-98b14c3 目录
3、以动态编译的形式编译安装 mysql 到 /usr/local/mysql5.1
4、编译 HandlerSocket 插件,在 /root/mysql/ahiguti-HandlerSocket-Plugin-for-MySQL-98b14c3 目录
# ./autogen.sh
# ./configure --with-mysql-source=/root/mysql/mysql-5.1.54 --with-mysql-bindir=/usr/local/mysql5.1/bin --with-mysql-plugindir=/usr/local/mysql5.1/lib/mysql/plugin
with-mysql-source 表示MySQL源代码目录,with-mysql-bindir 表示MySQL二进制可执行文件目录(也就是 mysql_config 所在目录),with-mysql-plugindir 表示MySQL插件目录
如果不清楚这个目录在哪,可以按如下方法查询:
mysql> SHOW VARIABLES LIKE 'plugin%';
+---------------+-----------------------+
| Variable_name | Value |
+---------------+-----------------------+
| plugin_dir | /usr/lib/mysql/plugin |
+---------------+-----------------------+
编译和安装
# make && make install
二、配置 MySQL
# vi /etc/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
# to allow handlersocket accept many concurren connections, make open_files_limit as large as possible.
激活HandlerSocket插件,在客户端命令执行
mysql> install plugin handlersocket soname 'handlersocket.so';
查看 handlersocket 进程
mysql> show processlist
+----+-------------+-----------------+---------------+---------+------+-------------------------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-------------+-----------------+---------------+---------+------+-------------------------------------------+------------------+
| 1 | system user | connecting host | NULL | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL |
| 2 | system user | connecting host | NULL | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL |
| 3 | system user | connecting host | NULL | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL |
| 4 | system user | connecting host | NULL | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL |
| 5 | system user | connecting host | NULL | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL |
| 6 | system user | connecting host | NULL | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL |
| 7 | system user | connecting host | NULL | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL |
| 8 | system user | connecting host | NULL | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL |
| 9 | system user | connecting host | NULL | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL |
| 10 | system user | connecting host | NULL | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL |
| 11 | system user | connecting host | NULL | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL |
| 12 | system user | connecting host | NULL | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL |
| 13 | system user | connecting host | NULL | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL |
| 14 | system user | connecting host | NULL | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL |
| 15 | system user | connecting host | NULL | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL |
| 16 | system user | connecting host | NULL | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL |
| 17 | system user | connecting host | handlersocket | Connect | NULL | handlersocket: mode=wr, 0 conns, 0 active | NULL |
查看系统进程占用的端口
# lsof -i :9998
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
mysqld 2731 mysql 11u IPv4 571386 TCP *:9998 (LISTEN)
# lsof -i :9999
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
mysqld 2731 mysql 29u IPv4 571403 TCP *:9999 (LISTEN)
三、测试使用
在数据库 test 创建测试表
CREATE TABLE `user` (
`user_id` INT(10) UNSIGNED NOT NULL,
`user_name` VARCHAR(50) DEFAULT NULL,
`user_email` VARCHAR(255) DEFAULT NULL,
`created` DATETIME DEFAULT NULL,
PRIMARY KEY (`user_id`),
KEY `INDEX_01` (`user_name`)
) ENGINE=INNODB
插入测试数据
INSERT INTO USER VALUES(1, "John", "john@test.com", CURRENT_TIMESTAMP);
INSERT INTO USER VALUES(2, "Kevin", "Kevin@test.com", CURRENT_TIMESTAMP);
INSERT INTO USER VALUES(3, "Dino", "Dino@test.com", CURRENT_TIMESTAMP);
编译 Perl 客户端,在 /root/mysql/ahiguti-HandlerSocket-Plugin-for-MySQL-98b14c3 目录执行
# ./autogen.sh
# ./configure --disable-handlersocket-server
# make && make install
# cd perl-Net-HandlerSocket
# perl Makefile.PL
# make && make install
perl 程序文件:
#!/usr/bin/perl use strict; use warnings; use Net::HandlerSocket; #1. establishing a connection my $args = { host => 'localhost', 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', 'INDEX_01', '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, '=', [ 'kevin' ], 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();
下载 hs4j-0.1 软件包。
Java 程序文件:
import java.sql.ResultSet; import com.google.code.hs4j.HSClient; import com.google.code.hs4j.HSClientBuilder; import com.google.code.hs4j.IndexSession; import com.google.code.hs4j.impl.HSClientBuilderImpl; public class TestNoSQL { public static void main(String[] args) throws Exception { HSClientBuilder hscb = new HSClientBuilderImpl(); hscb.setServerAddress("10.10.10.2", 9999); HSClient hsc = hscb.build(); IndexSession is = hsc.openIndexSession(1,"test", "user", "INDEX_01", new String[]{"user_name","user_email","created"}); // 插入 is.insert(new String[]{"ezerg", "ezerg@126.com", "2011-10-12 13:04:33"}); final String[] keys = { "ezerg"}; // 查询 ResultSet rs = is.find(keys); while(rs.next()) { System.out.println("name="+rs.getString(1)); System.out.println("email="+rs.getString(2)); } // 删除 // is.delete(keys); // 更新 // is.update(keys, new String[] { "ezerg", "ezerg@163.com", "2011-10-12 13:04:33" }, FindOperator.EQ); // 关闭连接 hsc.shutdown(); } }
发表评论
-
Windows 环境安装 mongodb 客户端 RockMongo
2014-06-25 15:12 4916继上一次《[url=http://ezerg.iteye.c ... -
Windows 环境安装 Redis 客户端 phpRedisAdmin
2014-06-24 17:56 5196最近在使用 Redis 做为 tomcat 集群中的 ses ... -
CentOS 4.8 安装并测试 MySQL Sphinx 插件
2011-10-16 08:16 1764一、安装 MySQL 和 Sphinx 引擎 1、下载 mys ... -
学习 MySQL InnoDB 存储引擎之概述
2011-10-11 13:31 1789InnoDB 基本的存储结构与 ... -
Oracle 10g 读书笔记之分区
2011-10-06 17:10 1734分区是将一个表或索引物理地分解为多个更小、更可管理的部分。它是 ... -
Oracle 10g 读书笔记之索引
2011-10-06 12:03 1311oracle 中的索引类型有: 1、B* 树索引:构造类似于二 ... -
Oracle 10g 读书笔记之数据库表
2011-10-04 18:46 1415oracle 中主要有 9 种表类 ... -
Oracle 10g 读书笔记之 redo 与 undo
2011-10-03 16:43 1635redo(重做信息)是 oracl ... -
Oracle 10g 读书笔记之锁
2011-10-02 10:53 1214锁机制用于管理对共享 ... -
Oracle 10g 报 ORA-00313 错误的解决
2011-10-02 10:09 1256最近由于清理系统,优化软件把 oralce 的日志文件误删除了 ... -
Oracle 10g 读书笔记之数据库常用文件
2011-09-30 08:48 1148一、参数文件和服务器 ... -
DB2 数据表增加非空字段
2011-07-14 13:56 2607DB2 数据库的表中增加一个非空字段居然会报错,因为以前使用过 ... -
Windows 下制作免安装的 MySQL 简化版
2011-07-05 22:40 2103随着 MySQL 版本的升级,安装包的体积越来越大,免安装包 ... -
DB2 常用命令
2011-06-23 22:37 1435实例级别操作: db2start 启动当前实例 db2st ... -
MySQL 第三方客户端工具显示中文乱码
2011-06-16 09:29 2151通过第三方工具连接数据库,表中的中文显示为乱码,但是通过 M ... -
解决 CentOS 4.8 创建 Oracle 10g 的数据库报错 ORA-12547
2011-05-11 12:25 1421使用 dbca 创建新的数据库,报错:ORA-12547: ... -
MySQL 5.1 分区表学习笔记
2011-05-06 08:41 2513MySQL 从 5.1.x 的版 ... -
CentOS 4.8 编译安装 MySQL 5.x 版本系列
2011-05-05 13:34 1703一、编译 MySQL5.0 # ./configure --p ... -
安装和使用 percona 推出的 Xtrabackup 备份 MySQL
2011-05-05 10:13 2251一、安装 XtraBackup 如果 ... -
CentOS 4.8 安装 Sybase ASE 15.0.3
2011-04-29 10:33 2572一、安装前的准备工作 ...
相关推荐
HandlerSocket 是MySQL的一个插件,用于跳过MySQL的SQL层面,直接访问内部的InnoDB存储引擎。
mysql-handlersocket-1.0.6-1.DC.1.x86_64
HandlerSocket会覆盖与SQL解析相关的所有CPU使用率。 相反,它直接向InnoDB使用文本协议来创建/读取/更新/删除(CRUD)数据。 它可以在服务器端结合多种操作。 支持SQL命令: SELECT, UPDATE, INSERT, DELETE 支持...
以MySQL Daemon Plugin的形式提供类似NoSQL的网络服务,通过这个插件,你可以直接跟MySQL后端的存储引擎做key-value式的交互,省去了MySQL上层的SQL解释、打开关闭表、创建查询计划等CPU开销。 目前使用MySQL的网站...
HandlerSocket的应用场景:MySQL自身的局限性,很多站点都采用了MySQL+Memcached的经典架构,甚至一些网站放弃MySQL而采用NoSQL产品,比如Redis/MongoDB等。不可否认,在做一些简单查询(尤其是PK查询)的时候,很多...
PHP调用MySQL插件HandlerSocket,基于kjdev/php-ext-handlersocketi
用于 MySQL 改进扩展的 HandlerSocket 插件 handlersocketi 扩展允许您访问 HandlerSocket 插件为 MySQL 提供的功能。 有关 MySQL 的 HandlerSocket 插件的更多信息,请访问
Memcache数据一致性的问题:当MySQL数据变化后,如果不能及时有效的清理掉过期的数据,就会造成...面对这些问题,HandlerSocket项目是个不错的解决方案,它通过插件的方式赋予MySQL完整的NoSQL功能,从原理上讲,它跳
Redis、Hash算法数据库、LSM算法数据库、HandlerSocket、分布式数据库
HandlerSocket详细介绍 mysql和memcached的集合
总算是在MySQL中延续了NoSQL的香火,以前单独架设Memcached服务器不仅浪费了内存,而且还必须自己维护数据的不一致问题,有了Memcached插件,这些问题都不存在了,而且借助MySQL本身的复制功能,我们可以说是变相的...
具有HandlerSocket的全部功能 连接复用,采用动态IO策略,只使用一个port进行通讯 进行DDL操作时不会hang住(可手动关闭被cache住的表) 支持流输出,对于大数量的返回,不会占用太多内存 易用: a)不需要在一...
HandlerSocket插件1
共涉及4台测试服务器:机器配置为:安装Webbench1.5,通过Webbench来压Web服务器。Nginx0.8.54+PHP5.3.3(php-fpm),安装有Mongodb和HandlerSocket的php驱动。...MongoDB版本:1.6.5MySQL版本:5.1.53Ha
转到用于连接到HandlerSocket Mysql插件的库。 参见github.com/ahiguti/HandlerSocket-Plugin-for-MySQL/ 安装 $ go get github.com/bketelsen/handlersocket-go 阅读示例-最佳示例在TEST文件中。 hs := New() // ...
handlersocket是基于mysql的nosql解决方案,与普通的nosql方案比较,具有更大的灵活性,可以使用mysql的索引。性能相比于mysql的批量操作方式,具有5倍左右的提升(我测试的,可能是内存设置的不多)。 详细内容见此...