避免 MySQL 中的“尝试获取锁定时发现死锁”
问题:
开发人员遇到间歇性的“尝试获取锁定时发现死锁;在跟踪在线用户活动的 InnoDB 表中运行 INSERT 时,尝试重新启动事务'错误。该表在页面刷新时更新,并由 cron 作业每 15 分钟清除一次。
有问题的查询:
解决方案:
要解决死锁,确保事务以一致的顺序锁定键至关重要。以下是建议的步骤:
查询中的键顺序:
对删除语句进行排序:
DELETE FROM onlineusers WHERE id IN ( SELECT id FROM onlineusers WHERE datetime <= now() - INTERVAL 900 SECOND ORDER BY id ) u;
重试机制:
以上是如何防止 MySQL 在线用户跟踪系统中出现'尝试获取锁定时发现死锁”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!