我们正在创建一个高度事务性的系统,MySQL作为DB(innodb引擎)。我们在表t1上有一个插入和更新触发器,它正在更新表t2和t3。我们观察到,只要并发用户量很高,我们就会在表t1上进行死锁。我们假设触发器发出一个表锁,直到它完成它的执行。我们在t1上放下了触发器,令人惊讶的是没有死锁了。
我的问题:
表t1有大约70,000行并且每天都在增加。
感谢任何输入。
提前致谢。
答案 0 :(得分:0)
您可以使用事务来完成所有处理客户端。
START TRANSACTION;
insert into t1;
update t2;
update t3;
COMMIT;
如果您可以使用客户提供的数据,请尝试并且不要使用'update select'和'insert select'构造。 InnoDB也使用行锁定,这比MyISAM使用的表锁定更好。