与多个读者和作者的MySql InnoDB争用问题

时间:2015-12-11 03:15:46

标签: mysql innodb

使用InnoDB,如果有一个进程从表中读取而另一个进程写入同一个表,是否存在争用问题?

1 个答案:

答案 0 :(得分:1)

是的,存在争议。但InnoDB非常努力(1)尽量减少对用户的影响,(2)解决导致“冲突”的争用。

读者会挂起他们正在查看的行,但只能阻止写入在完成之前更改值。 (这是一个冗长,复杂的主题,涉及"事务隔离模式"等。)

写入者阻止行以防止其他写入踩到他们的脚趾。

如果两个线程试图触及同一行,则其中一个线程可能会被迫等到另一个线程完成其事务处理。

在一个更极端的情况下,每个线程都在等待另一个线程,一个"死锁"被发现了。这导致一个交易被回滚"。

结论:争用很少成为问题。但是,您应该在每个SQL语句之后检查错误,以防万一出现死锁。