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客户端连接时,我测试的是,这时不能调整表结构。同时查询只能基于索引,不能关联多个表等(这些都是可以接受的)。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/172626.html原文链接:https://javaforall.cn
相关文章
- 在java中print和println_JAVA命令行参数
- java局域网发送文件_Java如何实现局域网文件传输代码案例分享
- java 四舍五入运算_JAVA正确的四舍五入方法「建议收藏」
- java卸载 安装错误_Java卸载后无法重新安装 提示已安装过[通俗易懂]
- Java基础知识总结(超详细整理),java从入门到精通pdf「建议收藏」
- Java商城源码最好用的java商城电商系统之一
- java有什么作用_Java有什么用「建议收藏」
- 怎么下载java_怎样下载Java的环境?
- java如何输入字符串_JAVA中怎样输入字符串「建议收藏」
- java resourcebundle_Java – Properties和ResourceBundle类学习「建议收藏」
- eclipse运行java程序_如何在Eclipse中运行简单的Java程序?「建议收藏」
- Java字符串常量池_字符串常量池溢出
- ringbuffer java例子_Java RingBuffer.publish方法代碼示例「建议收藏」
- 大数据必学Java基础(六十四):数据结构队列介绍
- java mutator,Java – 使用Accessor和Mutator方法「建议收藏」
- java输出一个数组的元素_Java输出数组元素「建议收藏」
- 【Java 网络编程】客户端 Socket 创建
- 通过java来获取系统的信息详解编程语言
- 库MySQL Database Backup with Java.(java备份mysql)
- 实现使用Java代码实现MySQL数据库连接(java连接mysql数据库代码)
- Java封装MySQL让编程更简单(java封装mysql)
- 技巧Linux环境下提高Java编译效率的技巧(linux下java编译)
- 使用Java设置Redis密码(redis密码java)
- 让Java开发能力在Linux下得到更大发挥(java linux编程)
- Oracle和Java结合,推出新一代商城系统(java oracle商城)