Mysql的乐观锁是一种锁定机制,用于在多个事务并发访问数据库时确保数据完整性。乐观锁假设在并发环境中很少会发生冲突,因此它不会立即锁定数据记录。相反,它在提交更新之前检查是否有其他事务已经修改了该记录。如果发现修改,则会回滚更新并重试事务。否则,它会将更新提交到数据库。
乐观锁通常与版本号(例如时间戳)一起使用。在每次更新数据记录时,都会更新版本号。在执行更新操作时,事务会检查当前数据记录的版本号是否与预期版本号相同。如果版本号不同,则表示其他事务已经修改了该记录,因此事务会回滚并重试。
Mysql使用SELECT ... FOR UPDATE或SELECT ... LOCK IN SH