技术开发 频道

主流NoSQL数据库评测之HandlerSocket

 loose_handlersocket_threads_wr = 16

  # the number of worker threads (
for write requests)

  open_files_limit
= 65535

  #
to allow handlersocket accept many concurrent connections

  #make open_files_limit
as large as possible.

  这里增加的这些主要是针对handlersocket的配置,它有2个端口,9998用来读数据,9999读写均可,但是通过9998来读的效率更高。这里我们设置处理读写的线程数均为16个,另外为了处理更多的并发连接,设置能打开的文件描述符个数为65535。

  四、安装MySQL授权表并启动数据库:

  [root@localhost mysql558]# scripts/mysql_install_db --user=mysql

  [root@localhost mysql558]# bin
/mysqld_safe --user=mysql &

  五、登录MySQL安装HandlerSocket Plugin:

  [root@localhost mysql558]# bin/mysql -u root -p

  mysql
> install plugin handlersocket soname 'handlersocket.so';

  Query OK,
0 rows affected (0.01 sec)

  通过以下命令查看也可见handlersocket已经成功安装到MySQL中:

  mysql> show processlist;

  mysql
> show plugins;

  测试结果:

  一、写操作

  成功写入500万条记录,共耗时4300秒,平均每秒写入数据1163笔。

  写入过程中,服务器比较稳定,CPU使用率平稳,Idle值稳定在70到72之间,等待时间稳定在14到19之间。内存分配上的变化较大,free部分从1.3G下降到25M,buffer部分从630M下降到65M,cache部分从1.5G上升到2.9G,虚拟内存从0上升到376K,但是没有交换区到内存的换入换出。磁盘IO表现平稳,每秒写入的块数稳定在10000到12000之间。

  二、读操作

  成功读出500万条记录,共耗时193秒,平均每秒读出数据25906笔。

  读数据过程中没有发生磁盘IO。CPU较繁忙,Idle在39到51之间,等待CPU资源的进程一直在1到6个之间。内存表现平稳没有波动。

  通过以上测试结果可以说明,写入的数据完全缓存到了文件系统中,所以cache部分占用的内存大量增加,这也是读取数据的时候没有发生磁盘IO的原因。

  总结:

        要说明的是,虽然这是一份真实的测试数据,但是并不一定具有普遍意义。因为应用场景是千差万别的,服务器的资源配置、数据记录的多少、单条数据的大小、读写的比例、客户端程序的质量等因素都会影响测试结果,甚至差别会非常大,对我们来说,更重要的是了解这个NoSQL产品的特性,知道它的适用场景,并且能够根据自己实际的应用场景针对性的进行测试,这样才能做到针对性的选型,只有最适合自己需求的产品才是最好的产品。

0
相关文章