准备重新优化一下 lealone 的 jdbc 驱动,因为在嵌入式场景,开单线程跑还打不过 h2,原先的 jdbc 驱动是为 client-server 运行模式设计的,调用 jdbc api 的应用线程需要把 sql 写到一个队列并进入等待状态,然后再由 jdbc 驱动内部的调度服务线程取出来执行,最后再换醒应用线程获取结果。

这样的设计思想在 client-server 模式下是可行的,因为网络开销才是瓶颈,出入队列唤醒线程这些步骤消耗的时间跟网络开销相比不值一提。若是嵌入式场景,因为不存在网络开销了,反而成为影响性能的原因之一。h2 在嵌入模式下,用单线程跑是可以从 jdbc 一直调用到存储引擎的,sql 不会加人队列,也不会唤醒线程,所以单线程跑出的性能比 lealone 好。

Reply to this note

Please Login to reply.

Discussion

No replies yet.