java - 我们如何分析 JOOQ 语句的速度

标签 java sql performance postgresql jooq

我已经使用 Union Platform 作为基于 Java 的游戏服务器实现了 JOOQ,并使用 Union Platform 的 Orbiter Micro(Union JS 客户端)在浏览器上运行它。

但是,对于30-40个活跃玩家的小规模赛事,联盟平台在速度上显得有些滞后。

对于每个游戏实例(即每个房间),我都配置了一个执行所有查询的工​​厂连接。它的作用是,

对于每个玩家的回合,

  • 播放器可以输入一个整数,在一系列(4 个查询)条件检查之后,它通过 JOOQ 插入/更新数据库
  • 然后为了取回整数的状态,它再次执行 3 个查询,这些查询有效地转换为 3 个链接的 HashMap 以更新游戏状态。

现在,响应花费了如此多的时间,以至于玩家看到了性能问题。而 Union Platform 实际上声称可以轻松处理超过 1000 个活跃玩家的实例。所以这实际上意味着我的 JOOQ 查询中存在一些错误(我确实使用了很多 LEFT OUTER JOIN)。

因此非常欢迎任何提高吞吐量和分析每个查询的建议。

最佳答案

对我来说,这听起来像是正常的 SQL 调优问题(或者可能是几个不同的问题)。鉴于 jOOQ 允许您执行实际的 SQL,并且在没有正确的索引和约束的情况下使用 OUTER JOIN 时会出现很多错误,问题很可能出在 SQL 本身。当您打开调试/跟踪日志记录时,jOOQ 将打印出几条信息到日志输出,包括

调试级别

微量水平

  • 与 DEBUG 级别相同
  • 声明准备时间
  • 绑定(bind)值
  • 声明绑定(bind)时间

如果你输入 log4j 就可以了或 slf4j在你的类路径上和 jOOQ 一起。此 blog post 中记录了更多详细信息

这是一个开始。您还可以使用类似 Yourkit Profiler 的工具或 JProfiler .显然,您应该考虑您的 Postgres 执行计划。在 Postgres documentation 中有一些关于此的指示。 .

关于java - 我们如何分析 JOOQ 语句的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8561317/

相关文章:

java - 无法建立APK或执行应用程式

mysql - SQL 查询 HAVING SUM 位于两个值之间

SQL Server 2008 计数

php - 性能问题(嵌套foreach循环,大数据集)

performance - 调用组件函数与内联代码时的开销-ColdFusion

java - 启动 Tomcat 时出错 - 外部参数实体 "%[dtd];"“在标记后有字符

java - 使用spring cloud更改eureka服务器的默认端口

java - Citrus Framework - 可以从响应中分配变量吗?

sql - 如何找出数据库上的 sql 查询所需的临时空间?

python - pyodbc/sqlAlchemy 启用快速执行