【发布时间】:2011-11-01 03:54:12
【问题描述】:
我们正在创建一个使用 MySQL 作为 DB(innodb 引擎)的高度事务性系统。我们在表 t1 上有一个插入和更新触发器,它正在更新表 t2 和 t3。我们观察到,只要并发用户量很高,我们就会在表 t1 上陷入死锁。我们假设触发器正在发出一个表锁,直到它完成它的执行。我们在 t1 上取消了触发器,令人惊讶的是没有死锁了。
我的问题:
- 是否不建议在高度事务性的系统中设置触发器
- 如果不触发,我们还有哪些其他选项可以实现相同的逻辑。
表 t1 有大约 70,000 行,并且每天都在增加。
感谢任何输入。
提前致谢。
【问题讨论】:
-
您没有提供足够的信息。发出
SHOW ENGINE INNODB STATUS会告诉你死锁的原因。 70k 行真的没什么,你应该做的(如果你需要帮助)是发布有问题的查询、表结构和触发器。您可以用字母替换实际的字段名称,这样就不会显示业务逻辑。
标签: mysql transactions triggers