node-mysqlからnode-mariasqlに乗り換える

nodejs_mariadb_mysqlNodeJSの開発にも慣れたことだし、そろそろMariaDBのスレッドプールに頼らずにnode-mysqlのpool機能を使って、DB接続を使いまわすようにしようと調べたときの覚書。

環境: MariaDB Server 10.0.14, node-mysql 2.5.2, node-mariasql 0.1.21

 

調査しているとnode-mysqlより速いnode-mariasqlを発見。

node-mysqlの作者が速度改善に取り組んだ記事が面白い。

 

速度比較ベンチマーク

 

ただDB接続をpoolしたい場合は別モジュールと組み合わせて開発する必要がある。

 

今のところnode-mariasqlに乗り換えて、MariaDBのスレッドプールに頼ることにした。

node-mysqlのpool機能を使って接続を使いまわすようにした方が結果的に速くなるかもしれない。

 

試してみて気付いたこと。

  • Node.js v0.11では動かない。v0.10では動く。
  • selectした行ごとにasync.mapで非同期処理している中でqueryを投げると「Already Closed」エラーになる。
    → res.on('end')の中でclient.close()を呼び出すと回避できた。

確かに速い気がするが、いつでもnode-mysqlに置き換えられるように作っておいた方が良さそう。

 

< 2015/04/09 Modified >
Apache Benchで試してみたところ速度的に大差ない。

node-mariasqlで実行したとき数値のカラム(countした値など)も文字列で返ってくるので、やっぱりnode-mysqlで開発することにした。

 

< Related Posts >