今天做了一个智能化的改进,用户想选用哪种组合不需要任何配置了,lealone 的 jdbc 客户端会根据调用的 jdbc api 自动选择最优的组合,比如在自动提交模式下哪怕是同一个 Statement 对象,先调用 executeUpdate(sql) 就会自动用 bio,然后调用 executeUpdateAsync(sql) 又自动切换到 nio。

@zhh-4096

压测下来最终发现:jdbc 客户端还是使用 bio(阻塞 io)更好,异步 api + nio 才是神仙搭配!

lealone 的 jdbc 客户端有4种组合:

1. bio + 同步 api ;

2. bio + 异步 api ;

3. nio + 同步 api ;

4. nio + 异步 api ;

其中1和2的性能一样;3最慢,比1和2慢20%以上;4最快,高并发时比1-3快10倍。

把 lealone 的 jdbc 客户端从默认的 nio 改成 bio 了,因为 jdbc 本身就是同步风格的 api,应用也习惯了同步风格,bio 配同步 api 最合适。如果应用想追求极致的性能,可以用 lealone 专有的 jdbc 异步 api,然后再搭配 nio,性能马上快10倍,缺点就是要适应异步 api 的编程风格。

Reply to this note

Please Login to reply.

Discussion

No replies yet.