9月 27

[转发] nodejs下mysql性能测试

nodejs下mysql性能测试

By qingdu on 2011 年 02 月 14 日
本文为原创文章,出自http://cnodejs.org,转载请注明出处和作者
作者:qingdu
原文:http://cnodejs.org/blog/?p=404

近期对node下的几个mysql操作库做了一下简单的调研
主要是针对这3个module进行
libmysqlclient,mysql-native, mysql

node-libmysqlclient

https://github.com/Sannis/node-mysql-libmysqlclient
基于libmysql的封装, 支持阻塞与非阻塞两种操作方式,目前在query部分功能比较完善,prepare statement方面还是有些bug,实际测试中一直出core

安装

npm install mysql-libmysqlclient

node-mysql

https://github.com/felixge/node-mysql
纯node的实现, 支持prepare statement, 数据的获取支持事件与callback两种方式

安装

npm install mysql

node-mysql-native

https://github.com/sidorares/nodejs-mysql-native

纯node的实现, 内置有简单的连接池支持,支持prepare statement, 数据的获取只支持通过事件方式

安装

npm install mysql-native

测试设计

测试表结构

CREATE TABLE `test10` (
`id` int(10) unsigned NOT NULL DEFAULT '0',
`txt` varchar(500) DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

测试数据

分别生成了含10, 100, 500, 1500行记录的4张表
使用10个并发连接分别对其进行SELECT * FROM table的查询

测试结论

NewImage.jpg

其中数值表示qps值

在结果集较小时node-mysql-native明显胜出
当结果集增大到接近100行时,node-libmysqlclient开始表现出更佳的性能
node-mysql性能与其他两个module差距比较大,如果对性能有一定要求的话,则其基本不可用

测试代码

http://code.google.com/p/cnodejs/source/browse/#svn%2Ftrunk%2Fmysql-benchmark