2012-08-01 69 views
0

我正在開發將從多個comuters運行的應用程序。我想鎖定mysql表,因此不會出現進程併發問題,例如一個進程正在寫入,另一個進程正在同時讀取。或者甚至更糟糕的是同時編寫(更新)不同的值。 MySQL提供了鎖,但文檔說我們應該避免在InnoDB中使用鎖。 Read here。請提供一些建議,在這種情況下應該怎麼做。感謝大家。mysql innodb鎖

回答

0

InnoDB是一個具有完整ACID支持的事務存儲引擎。 InnoDB的一個屬性是它處理併發更新。具體取決於隔離級別,但通常InnoDB不允許兩個事務通過鎖定行來修改同一行。它不會鎖定整個表,以便其他記錄可以被其他事務修改。

如果將隔離級別設置爲serializable,則應用程序將工作,因爲根本沒有併發性,但仍允許一些併發性。

隔離級別越高,併發性越低,如果鎖定表,仍有更多的併發性。