2010-05-22 109 views
-1

我有一套編寫器和一套使用MySQL ISAM表的讀取器的簡單設置。編寫者只插入行,而讀者只檢查新行。MySQL鎖定問題

好的,所以我知道在這種情況下我不需要鎖,因爲我沒有修改現有的行。然而,我的作家正在訪問另外一個表,確實需要鎖定。我的資料片似乎除了MySQL文檔中規定的以下限制無關:

需要鎖必須 獲得所有它在 一個LOCK TABLES語句需要的鎖的會話。當 這樣獲得的鎖被保持時, 會話只能訪問被鎖定的 表。

所以訪問我要插入行的表:例如,在下面的語句 序列,錯誤 對試圖訪問T2 因爲它沒有處於LOCK TABLES語句鎖定發生進入,我需要鎖定它,這是我的性能問題。有關如何解決這個問題的任何建議?

+0

你應該給我們更多關於相關表的信息,以及爲什麼你需要鎖定它。這會給我們一個更好的想法,可以向您提供哪些替代方案。 – webbiedave 2010-05-22 22:21:54

回答

0

通常,您需要鎖定的查詢周圍立即鎖定和解鎖。該文檔只是簡單地說明,對於任何一組查詢在鎖定時運行,所涉及的所有表都必須鎖定。只要你完成,你可以解鎖,並觸摸任何其他表。

同時認爲,InnoDB支持行級鎖,這往往是最好的表鎖的性能,因爲其他查詢其他行也不會被鎖定爲讀而你也寫。