Amazon RDS 中的 MySQL 表锁定问题

标签 mysql django database amazon-web-services amazon-rds

我们在 Amazon RDS 平台中托管 MySQL 数据库。我们看到很多由于锁定而导致的死锁问题。我试图理解死锁转储报告,它粗略地描述了受影响的事务和锁的数量等。以下是这样的跟踪:

2017-12-14 09:00:21 2ba3a5758700
*** (1) TRANSACTION:
TRANSACTION 1297355720, ACTIVE 0 sec inserting
mysql tables in use 1, locked 1
LOCK WAIT 7 lock struct(s), heap size 1184, 3 row lock(s), undo log entries 1
MySQL thread id 9198894, OS thread handle 0x2ba0b33da700, query id 5198593130

在上面的跟踪中,第 4 行显示 - 'mysql 表正在使用 1,已锁定 1'。 “锁定 1”是什么意思?这是否意味着相关表在事务期间被完全锁定?

我们没有显式锁定表。我们在某些地方使用 Django @transaction.atomic,但我们的代码中没有显式的表锁定。

请帮助我了解如何调试表锁定问题。

最佳答案

检查所有有@transaction.atomic的地方,看看它们是否在每个这样的代码块中以相同的顺序修改表。如果不是 - 这是最有可能发生死锁的地方。

关于Amazon RDS 中的 MySQL 表锁定问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47817999/

相关文章:

内联脚本的 Django Stripe js 阻塞

django - 如何在 POST 请求中返回数据(django/tastypie)

django - 如何在 django 的管理界面中覆盖 help_text

mysql - 调查应用程序的关系数据库架构

ios - 有关使用 TableView 在 Swift 中构建数据以及在 Google map 上进行映射的建议

mysql - 有没有办法在下次重新启动之前禁用特定 mysql 数据库的区分大小写选项?

php - 推进 ORM : PDOException "Can' t create more than max_prepared_stmt_count statements"

Java:更新MySQL表的id

sql - 需要数据库设计帮助

android - 每次运行后如何清除数据库中的数据?