mysql异步驱动_MySQL 异步驱动浅析 (二):缺点分析

上一篇文章分析 Mysql 异步驱动的性能。本文阐述 Mysql Async 使用时需要注意的问题

虽然 Mysql Async 性能出色,但使用过程中还是遇到了各种各样的问题

一、不会自动关闭 PreparedStatement

假如你的业务中存在很多中 statement,这可能会导致 PreparedStatement

数量不够。

通常可以通过以下方法解决:

增加 mysql 服务端 PreparedStatement

数量设置

另外还可以使用修改过的 版本

(已发布到maven中心库)

二、执行事务时,所有语句必须串行

因为该驱动一个链接不能同时执行多个 SQL 语句(受限于MySQL协议)所以

conn.inTransaction { c =>

val fa = c.sendQuery("xxx")

val fb = c.sendQuery("yyy")

}

这样的代码就不能正确运行,必须改成如下串行或等价的形式

conn.inTransaction { c =>

for {

a

b

} yield (a, b)

}

三、不支持客户端 PreparedStatement

Mysql-connector-java

支持客户端 PreparedStatement,从而可以开启将多个插入重写为一个批量插入的功能(rewriteBatchedStatements)。

批量插入语句可以减少锁的次数,从而大幅大幅提升性能的,这在一些插入频繁场景(如 akka-persistence)非常有用。

要解决这个问题,只能手工生成 批量插入语句

四、Netty 是不可配置的

Netty 相关的设置硬编码在实现里,无法自定义 EventLoop

也无法开启 Linux 平台 native epoll

支持(该选项可以进一步提升性能,减少 GC 压力)。

使用前文提到的版本里已经默认开启了 native epoll

支持。

注意:本文来自Scala Cool。本站无法对本文内容的真实性、完整性、及时性、原创性提供任何保证,请您自行验证核实并承担相关的风险与后果!

CoLaBug.com遵循[CC BY-SA 4.0]分享并保持客观立场,本站不承担此类作品侵权行为的直接责任及连带责任。您有版权、意见、投诉等问题,请通过[eMail]联系我们处理,如需商业授权请联系原作者/原网站。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值