理论上这个折中方案应该性能很好才对,但是虚拟线程的启动和切换也是有开销的,不如异步 jdbc api + nio 的组合。比如10万条 sql 用1000个虚拟线程跑,每个虚拟线程执行100条,因为每次执行 sql 调用同步 jdbc api 都要等待,就算不阻塞系统线程,也要切换虚拟线程,所以实际上发生了10万次切换操作。

@zhh-4096

异步 jdbc api + nio 性能好于 同步 jdbc api + bio,我发现在这两者之间有个折中方案: 虚拟线程 + 同步 jdbc api + nio,也就是说应用在虚拟线程中调用同步 jdbc api,然后 jdbc 驱动使用 nio 跟后端的数据库通信。如果 jdbc 驱动依然使用 bio,搭配虚拟线程可能会更差。 ​​​

Reply to this note

Please Login to reply.

Discussion

No replies yet.