handlersocket plugin client for javaとそれを用いたベンチマーク
DESCRIPTION
TRANSCRIPT
![Page 1: HandlerSocket plugin Client for Javaとそれを用いたベンチマーク](https://reader033.vdocuments.mx/reader033/viewer/2022052504/55389a334a795977028b47b8/html5/thumbnails/1.jpg)
HandlerSocket pluginClient for Java
![Page 2: HandlerSocket plugin Client for Javaとそれを用いたベンチマーク](https://reader033.vdocuments.mx/reader033/viewer/2022052504/55389a334a795977028b47b8/html5/thumbnails/2.jpg)
HandlerSocketとはMySQL plugin機能(5.1から対応)を用いたplugin実装の一つ
Handlerを直接操作することで制約とのトレードオフで高パフォーマンスを実現
独自バイナリプロトコルで送受信データサイズを削減。
複数コマンド(≒SQL)の一括実行が可能。
![Page 3: HandlerSocket plugin Client for Javaとそれを用いたベンチマーク](https://reader033.vdocuments.mx/reader033/viewer/2022052504/55389a334a795977028b47b8/html5/thumbnails/3.jpg)
HandlerSocketとは
http://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL
![Page 4: HandlerSocket plugin Client for Javaとそれを用いたベンチマーク](https://reader033.vdocuments.mx/reader033/viewer/2022052504/55389a334a795977028b47b8/html5/thumbnails/4.jpg)
HandlerSocketとは
http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html より図引用
![Page 5: HandlerSocket plugin Client for Javaとそれを用いたベンチマーク](https://reader033.vdocuments.mx/reader033/viewer/2022052504/55389a334a795977028b47b8/html5/thumbnails/5.jpg)
HandlerSocketとは情報源
http://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL
http://www.slideshare.net/akirahiguchi/handlersocket-plugin-for-mysql-4664154
http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html
など
![Page 6: HandlerSocket plugin Client for Javaとそれを用いたベンチマーク](https://reader033.vdocuments.mx/reader033/viewer/2022052504/55389a334a795977028b47b8/html5/thumbnails/6.jpg)
HandlerSocket plugin Client for Java
純正のクライアント実装はC/Perlのみ
なのでJava版も作りました。(Pure Java)
http://code.google.com/p/handlersocketforjava/
ただし未検証事項が多くバグがかなり残っている可能性が高いです。
とりあえず動きます。
![Page 7: HandlerSocket plugin Client for Javaとそれを用いたベンチマーク](https://reader033.vdocuments.mx/reader033/viewer/2022052504/55389a334a795977028b47b8/html5/thumbnails/7.jpg)
HandlerSocket plugin Client for Java
http://code.google.com/p/handlersocketforjava/
![Page 8: HandlerSocket plugin Client for Javaとそれを用いたベンチマーク](https://reader033.vdocuments.mx/reader033/viewer/2022052504/55389a334a795977028b47b8/html5/thumbnails/8.jpg)
HandlerSocket plugin Client for Java
クラスは2つのみ(HandlerSocket/HandlerSocketResult)
features.
リクエスト/レスポンスデータの型マッピング機構(今は全て文字列として扱ってる)
ソケット処理部分の最適化
Commons-poolへの対応?
![Page 9: HandlerSocket plugin Client for Javaとそれを用いたベンチマーク](https://reader033.vdocuments.mx/reader033/viewer/2022052504/55389a334a795977028b47b8/html5/thumbnails/9.jpg)
Benchmark
Javaクライアントを用いて性能試験を実施
条件
10,000件のデータについてCRUD操作のQPSを測定。
MyISAM/InnoDB
bulk処理-100件(HandlerSocket) /
1件づつ(HandlerSocket/JDBC)
1~32の並列スレッド動作で実施
![Page 10: HandlerSocket plugin Client for Javaとそれを用いたベンチマーク](https://reader033.vdocuments.mx/reader033/viewer/2022052504/55389a334a795977028b47b8/html5/thumbnails/10.jpg)
Benchmark
クライアント動作環境
Macbook Pro(2.66GHz Core2Duo/4GB memory)
HandlerSocket plugin Client for Java(自作)
サーバー動作環境
KBM上CentOs 5.5(2.2GHz 2Core/4GB memory)
MySQL 5.1.50
HandlerSocket plugin
![Page 11: HandlerSocket plugin Client for Javaとそれを用いたベンチマーク](https://reader033.vdocuments.mx/reader033/viewer/2022052504/55389a334a795977028b47b8/html5/thumbnails/11.jpg)
Benchmark
Benchmark用table構成
MyISAM/InnoDBとも以下の構成
Field Type Null Key Default
uuid int no pri null
id varchar no uni null
json varchar no null
created datetime yes null
updated datetime yes null
deleted int yes mul 0
![Page 12: HandlerSocket plugin Client for Javaとそれを用いたベンチマーク](https://reader033.vdocuments.mx/reader033/viewer/2022052504/55389a334a795977028b47b8/html5/thumbnails/12.jpg)
Benchmark(select)
0
10000
20000
30000
40000
1 2 4 8 16 32
QPS
スレッド
HandlerSocket-MyISAM(bulk100)HandlerSocket-InnoDB(bulk100)JDBC-MyISAMJDBC-InnoDB
![Page 13: HandlerSocket plugin Client for Javaとそれを用いたベンチマーク](https://reader033.vdocuments.mx/reader033/viewer/2022052504/55389a334a795977028b47b8/html5/thumbnails/13.jpg)
Benchmark(select)
0
1000
2000
3000
4000
1 2 4 8 16 32
QPS
スレッド
HandlerSocket-MyISAM(single)HandlerSocket-InnoDB(single)JDBC-MyISAMJDBC-InnoDB
![Page 14: HandlerSocket plugin Client for Javaとそれを用いたベンチマーク](https://reader033.vdocuments.mx/reader033/viewer/2022052504/55389a334a795977028b47b8/html5/thumbnails/14.jpg)
Benchmark(insert)
0
7500
15000
22500
30000
1 2 4 8 16 32
QPS
スレッド
HandlerSocket-MyISAM(bulk100)HandlerSocket-InnoDB(bulk100)JDBC-MyISAMJDBC-InnoDB
![Page 15: HandlerSocket plugin Client for Javaとそれを用いたベンチマーク](https://reader033.vdocuments.mx/reader033/viewer/2022052504/55389a334a795977028b47b8/html5/thumbnails/15.jpg)
Benchmark(insert)
0
750
1500
2250
3000
1 2 4 8 16 32
QPS
スレッド
HandlerSocket-MyISAM(single)HandlerSocket-InnoDB(single)JDBC-MyISAMJDBC-InnoDB
![Page 16: HandlerSocket plugin Client for Javaとそれを用いたベンチマーク](https://reader033.vdocuments.mx/reader033/viewer/2022052504/55389a334a795977028b47b8/html5/thumbnails/16.jpg)
Benchmark(update)
0
7500
15000
22500
30000
1 2 4 8 16 32
QPS
スレッド
HandlerSocket-MyISAM(bulk100)HandlerSocket-InnoDB(bulk100)JDBC-MyISAMJDBC-InnoDB
![Page 17: HandlerSocket plugin Client for Javaとそれを用いたベンチマーク](https://reader033.vdocuments.mx/reader033/viewer/2022052504/55389a334a795977028b47b8/html5/thumbnails/17.jpg)
Benchmark(update)
0
750
1500
2250
3000
1 2 4 8 16 32
QPS
スレッド
HandlerSocket-MyISAM(single)HandlerSocket-InnoDB(single)JDBC-MyISAMJDBC-InnoDB
![Page 18: HandlerSocket plugin Client for Javaとそれを用いたベンチマーク](https://reader033.vdocuments.mx/reader033/viewer/2022052504/55389a334a795977028b47b8/html5/thumbnails/18.jpg)
Benchmark(delete)
0
7500
15000
22500
30000
1 2 4 8 16 32
QPS
スレッド
HandlerSocket-MyISAM(bulk100)HandlerSocket-InnoDB(bulk100)JDBC-MyISAMJDBC-InnoDB
![Page 19: HandlerSocket plugin Client for Javaとそれを用いたベンチマーク](https://reader033.vdocuments.mx/reader033/viewer/2022052504/55389a334a795977028b47b8/html5/thumbnails/19.jpg)
Benchmark(delete)
0
750
1500
2250
3000
1 2 4 8 16 32
QPS
スレッド
HandlerSocket-MyISAM(single)HandlerSocket-InnoDB(single)JDBC-MyISAMJDBC-InnoDB
![Page 20: HandlerSocket plugin Client for Javaとそれを用いたベンチマーク](https://reader033.vdocuments.mx/reader033/viewer/2022052504/55389a334a795977028b47b8/html5/thumbnails/20.jpg)
ざっくりとした所感基本性能は高い
bulk処理は非常に有効
あとは仕様上の制約といかに上手くつきあっていくか。