MySQL 队列事务

MySQL queue transactions

我的数据库中有一个队列(一个 table 有一个列,它是一个枚举并且有队列、已完成和工作状态),我在它上面执行事务,它改变了某些行的状态正在排队或正在完成,但首先我必须 运行 一个复杂的查询 select 一行。 所以现在,首先应用程序运行是一个select,得到一行,然后运行s更新,将状态从 Queue 更改为 Working(在事务中,应用程序是 API,写在 Spring Boot 中,我使用 jdbctemplate访问MySQL数据库,我用的这个select和改变状态的方法标有@Transactional 注释)。 此外,使用 API! 的应用程序()是多线程的,因此此事务中的两个或多个可能 运行 在同时(多次调用 API)。

有没有可能,他们return在同一行? 示例:T1、T2 为事务,S1、S2 selects、U1、U2 更新。 执行顺序:T1与T2

同时开始
T1 { S1 --->U1 }

  T2 { S2 ----->U2}

第一次更新前的第2个select运行s,所以他们能return在同一行吗?

是的,有可能 2 select 语句 return 具有相同值的相同记录,这完全取决于您在查询数据时应用的锁定和隔离级别。

有关详细信息,请参阅 SO 主题。