【问题标题】:Locking 10 rows for processing and then deletion in spring jpa在spring jpa中锁定10行进行处理然后删除
【发布时间】:2020-11-01 15:00:09
【问题描述】:

我有一个 mysql 表,它被两个进程附加,两个单独的进程正在从表中读取以处理记录。写入后的记录不会更新。

每个读取进程每小时唤醒一次以检查是否存在任何记录并处理记录。处理完成后,需要删除记录,以免再次处理记录。

我正在使用带有 mysql 的 spring JPA。现在我正在考虑使用 PESSIMISTIC_WRITE 锁一次查询和锁定 10 条记录,然后删除它们。我可以在使用 PESSIMISTIC_WRITE 锁的同时使用 Pageable 来查询记录吗?而且,Pageable 会只锁定一页记录吗?

我想对这种方法的想法以及其他人是否尝试过。如有任何反馈,我将不胜感激。

问候, 灰

【问题讨论】:

  • 这取决于查询,somethimes JPA 获取所有数据然后处理,somethimes 使用限制偏移量进行查询。对于第二种情况,可以这样做。不如先试试看?

标签: mysql sql spring-data-jpa


【解决方案1】:

我最终使用 LIMIT 每次获取 10 行。在我的 SQL 中,我还添加了“FOR UPDATE”来锁定它们。然后我处理了这些行并删除了同一个事务中的 10 行。

【讨论】:

    猜你喜欢
    • 2012-07-29
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 2019-02-03
    相关资源
    最近更新 更多