java handlersocket_HandlerSocket java客户端
MySQL中有個handlersocket,直接跳過數據庫處理中的sql分析過程,直接調用存儲引擎的接口,可以大幅度提升數據庫的性能。我的測試中,使用handlersocket與sql,可以提升約3-5倍,在我的環境中單條“增刪改查”可以達到2.5TPS左右,沒有作者說得可以達到10萬TPS。
有一個hs4j的java客戶端,但是有些功能沒有完善,還有一個不太正常的現象,就是連接時間長了,就會斷開,沒有定位具體的原因。所以自己寫了客戶端,基于netty 4,算是對netty 4的一次嘗試,netty 4與netty 3區別很大。
代碼已在github開源:
https://github.com/flyinmind/HandlerSocket4Java
代碼結構比較清晰,HSBenchMark.java是性能測試程序,也是調用樣例,com.huodian.hs4j.command中是處理協議命令的類,com.huodian.hs4j.netty中處理netty相關的內容。
可以支持批量處理,在我的環境中,批量處理并沒有大幅度提升性能,我分析,瓶頸應該在數據庫,所以批量沒有提升性能,但是在批量時,客戶端CPU占用會下降。使用InnoDB于MyISAM存儲引擎都試過,雖然官網說支持InnoDB,但是MyISAM引擎也是可以的,比InnoDB更快。
數據庫服務器中innodb_buffer_pool_size設置為8G,數據量最大3200萬行,每行7列。32萬->320萬->3200萬的數據量都嘗試過,數據量上升時,性能沒有明顯下降,可能是內存沒有利用起來。隨著數據量上升,內存消耗逐步上升,3200萬行時只占用了2G內存,內存沒有用起來,不知道有什么設置可以將內存充分用起來。
handlersocket優點,相當于sql性能更高,相對于memcached,可以持久化,支持多列等,因為基于存儲引擎,所以數據庫的集群也是可以支持的(我沒測試),使用handlersocket時,服務端CPU消耗更少。
但是,有個比較大的缺點,有handlersocket客戶端連接時,我測試的是,這時不能調整表結構。同時查詢只能基于索引,不能關聯多個表等(這些都是可以接受的)。
原文:http://blog.csdn.net/flyinmind/article/details/20864535
總結
以上是生活随笔為你收集整理的java handlersocket_HandlerSocket java客户端的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 姓胡属虎起什么网名好听
- 下一篇: java中修饰常量的事_浅谈java中的