在 JOOQ 中使用 NOWAIT 和 SKIP LOCKED 子句的解决方法
Workaround for using NOWAIT and SKIP LOCKED clause in JOOQ
我正在使用 Jooq 进行数据库事务管理。我发现 NOWAIT
和 SKIP LOCKED
子句仅在 MySQL 的更高版本中受支持。在我使用的 MYSQL 版本中不支持它们。那么,在 JooQ 中,是否有解决方法可以解决这个问题?其中一个线程不等待锁定的实体并继续处理其他实体而不更改 innodb_lock_wait_timeout
数据库配置?
SKIP LOCKED
很难模拟,但是使用 innodb_lock_wait_timeout
会话变量模拟 WAIT n
或 NOWAIT
非常有意义。我们已经在 jOOQ 3.15 中为 PostgreSQL 这样做了,所以为什么不对旧版本的 MySQL 也这样做:
- https://github.com/jOOQ/jOOQ/issues/11243 (PostgreSQL)
- https://github.com/jOOQ/jOOQ/issues/11543(MariaDB,MySQL)
这将在 jOOQ 3.15 中提供
我正在使用 Jooq 进行数据库事务管理。我发现 NOWAIT
和 SKIP LOCKED
子句仅在 MySQL 的更高版本中受支持。在我使用的 MYSQL 版本中不支持它们。那么,在 JooQ 中,是否有解决方法可以解决这个问题?其中一个线程不等待锁定的实体并继续处理其他实体而不更改 innodb_lock_wait_timeout
数据库配置?
SKIP LOCKED
很难模拟,但是使用 innodb_lock_wait_timeout
会话变量模拟 WAIT n
或 NOWAIT
非常有意义。我们已经在 jOOQ 3.15 中为 PostgreSQL 这样做了,所以为什么不对旧版本的 MySQL 也这样做:
- https://github.com/jOOQ/jOOQ/issues/11243 (PostgreSQL)
- https://github.com/jOOQ/jOOQ/issues/11543(MariaDB,MySQL)
这将在 jOOQ 3.15 中提供