jooq在java中是否比简单的sql具有任何性能优势

San*_*mar 3 java sql prepared-statement jooq

我想将jooq用于我的java web项目,因为从它的规范看起来它看起来简单而且很好的查询构建器,但是它比java中的简单查询或预处理语句有任何性能提升.

Luk*_*der 7

有正在进行的(未发布的)基准测试检查jOOQ中的瓶颈和一般性能问题.这里可以看到最近发现的问题的一个例子:

https://github.com/jOOQ/jOOQ/issues/1625

正如Mikko所述,jOOQ无法直接击败传递给JDBC的静态SQL字符串,因为您将始终拥有以下开销:

  1. 构造jOOQ对象
  2. 遍历jOOQ对象以呈现SQL
  3. PreparedStatement使用该SQL 创建
  4. 遍历jOOQ对象以获取绑定变量,将它们绑定到 PreparedStatement

如果性能在您的环境中至关重要,我建议您不要让jOOQ为每个查询执行执行这些步骤.相反,让jOOQ渲染SQL一次并自己缓存SQL字符串,以及对可重用的引用PreparedStatement.但是,如果您没有使用内存数据库,例如H2,我们在这里讨论微优化,如基准测试中所示.我们谈论的是每次查询获得<1ms.


Mik*_*unu 5

不,它不提供性能增益。JOOQ 本身通过 JDBC 与数据库通信(并使用准备好的语句),并且不包含缓存,因此它根本不可能比直接通过 JDBC 执行查询更快。