MySql InnoDB与多个读写器的争用问题



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

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

读卡器挂在正在查看的行上,但只足以防止写操作在完成之前更改值。(这是一个漫长而复杂的主题,涉及"事务隔离模式"等)

写入程序阻塞行以防止其他写入程序踩到它们的脚趾。

如果两个线程试图接触同一行,其中一个线程可能会被迫等待,直到另一个线程完成其"事务"。

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

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

最新更新