【发布时间】:2021-06-02 04:37:59
【问题描述】:
我有一个存储过程,它从多个来源收集数据,转换并最终删除,然后将数据转储到 TableA
在此存储过程运行时,其他用户经常对TableA 执行选择查询,从而导致死锁,从而导致存储过程失败。
我的存储过程在开始时确实使用了SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;,但它似乎不起作用或者我使用错误。
如果不使用READ/WRITE LOCKS,有什么方法可以确保不会发生这种情况?
MySQL 版本:5.7.23-enterprise-commercial-advanced-log
【问题讨论】:
-
在可能陷入死锁的操作之前立即锁定表,并在之后立即解锁。或者提高事务级别 - 甚至可能直到可序列化。
-
@Akina 你能详细说明一下“增加事务级别”部分吗?
标签: mysql isolation-level database-deadlocks