如何避免mysql死锁?

如何避免mysql死锁?,mysql,database-deadlocks,Mysql,Database Deadlocks,我遇到无法删除记录的问题。我一直遇到死锁超时问题 我正在运行一个简单的查询 delete from phone_calls where status =0 过了一段时间,我得到了这个错误锁等待超时超过;尝试重新启动事务 我能做些什么来解决这个问题?我的问题有什么不对吗 注意,如果我添加一个限制1000,它可以工作,但如果没有限制,它将进入死锁。首先,这不是死锁。这是一个简单的锁等待超时。死锁上给出的错误类似于“尝试获取锁时发现死锁” 第二,其他一些事务仍在运行,并在状态为0的phone_cal

我遇到无法删除记录的问题。我一直遇到死锁超时问题

我正在运行一个简单的查询

delete from phone_calls where status =0
过了一段时间,我得到了这个错误
锁等待超时超过;尝试重新启动事务

我能做些什么来解决这个问题?我的问题有什么不对吗


注意,如果我添加一个限制1000,它可以工作,但如果没有限制,它将进入死锁。

首先,这不是死锁。这是一个简单的锁等待超时。死锁上给出的错误类似于“尝试获取锁时发现死锁”


第二,其他一些事务仍在运行,并在状态为0的phone_calls中的一行或几行上持有锁。如果status不是一个索引,那么您实际上持有一个表锁,而两个查询不能同时这样做。删除所有这类行可能需要一段时间,而且作业运行得太频繁。

您使用的是事务吗?您所说的事务是什么意思?听起来好像是另一个并发查询或事务锁定了表(或表中的某些行)。通常在其他线程持有记录锁时发生。事务保证了mysqlserver中的原子操作,但是当我显示processlist时,我的列表上只有delete进程。谢谢您提供的信息。是的,当我做了一个限制,它执行它。(谢谢)