在高度交易系统中触发

时间:2011-08-22 13:19:04

标签: mysql transactions triggers

我们正在创建一个高度事务性的系统,MySQL作为DB(innodb引擎)。我们在表t1上有一个插入和更新触发器,它正在更新表t2和t3。我们观察到,只要并发用户量很高,我们就会在表t1上进行死锁。我们假设触发器发出一个表锁,直到它完成它的执行。我们在t1上放下了触发器,令人惊讶的是没有死锁了。

我的问题:

  1. 不建议在高度交易系统中使用触发器
  2. 如果没有触发我们实现相同逻辑的其他选项。
  3. 表t1有大约70,000行并且每天都在增加。

    感谢任何输入。

    提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以使用事务来完成所有处理客户端。

START TRANSACTION;

insert into t1;
update t2;
update t3;

COMMIT;

如果您可以使用客户提供的数据,请尝试并且不要使用'update select'和'insert select'构造。 InnoDB也使用行锁定,这比MyISAM使用的表锁定更好。