我正在开发将从多个计算机运行的应用程序。我想锁定mysql表,因此不会出现进程并发问题,就像一个进程正在编写而其他进程正在同时读取。或者更糟糕的是,两个过程同时写入(更新)不同的值。 MySQL提供锁,但文档说我们应该避免使用InnoDB的锁。 Read here。请提供一些建议,在这种情况下该怎么做。谢谢大家。
答案 0 :(得分:0)
InnoDB是一个具有完整ACID支持的事务存储引擎。 InnoDB的一个属性是它处理并发更新。具体取决于隔离级别,但通常InnoDB不允许两个事务通过锁定行来修改同一行。它不会锁定整个表,因此其他事务可以修改其他记录。
如果将隔离级别设置为serializable
,则应用程序将起作用,因为根本没有并发性,但仍然允许一些并发。
隔离级别越高,你的并发性就越少,如果锁定表,你仍然拥有更多的并发性。