【发布时间】:2017-09-26 10:52:21
【问题描述】:
在休眠条件中使用 PESSIMISTIC_WRITE 作为 LockMode 作为 Select for update 查询的替代方案,性能是否存在显着差异。
用例涉及以下几点:
- 状态、时间等多列值的限制
- 按多列排序
- 只选择第一行进行处理。
此处理由多台机器/线程同时完成。 我目前正在使用休眠条件,这会导致多次锁定超时,从而导致所有其他查询阻塞。
【问题讨论】:
-
你确定 Hibernate 确实为 MySQL/MariaDB 实现了
PESSIMISTIC_WRITE? -
是的,有用于 MySQL 的。虽然我使用的是 InnoDB 引擎而不是 MariaDB
-
为
PESSIMISTIC_WRITE生成了什么SQL?我能找到的一点是SELECT ... FOR UPDATE(在 InnoDB 中)。当流量低且查询速度快时,您不太可能遇到问题。 -
可以有5个并发请求。
-
是的,在 InnoDB 中选择 UPDATE
标签: mysql hibernate innodb hibernate-criteria readwritelock