原来 MySQL 的 READ-COMMITTED 隔离级别下,通过 FOR UPDATE 实现简单扣库存。迁移到 TiDB 后出现乐观锁冲突或死锁,应该如何调整应用?
1 个赞
TiDB 完全支持悲观事务,行为与 MySQL 兼容。有以下三种切换方式:
| 方式 | 作用范围 | 命令 |
|---|---|---|
| 全局默认 | 整个集群新建的 Session | SET GLOBAL tidb_txn_mode = 'pessimistic'; |
| Session 级 | 当前连接 | SET SESSION tidb_txn_mode = 'pessimistic'; |
| 事务级 | 仅当前事务 | BEGIN PESSIMISTIC; … COMMIT; |
1 个赞
试试切换为悲观事务模式,支持全局、会话、事务三种粒度按需设置。
升级前在测试环境跑业务回归,对比SQL执行计划。
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。