2017-08-14 72 views

回答

2

如果在查詢讀取表時修改了表,則讀取查詢可能會返回不正確的結果。爲防止出現這種情況,MyISAM使用鎖*來防止其他線程從該表中讀取時寫入表。這個鎖並不妨礙其他讀取查詢,但是 - 任何數量的線程都可以共享該鎖。

查詢寫入它們時,表也被鎖定。這使用不同類型的鎖來防止在該表上發生任何其他寫入或讀取

+0

Thanks.But我無法找到正式手冊上的讀鎖(當查詢數據時)的信息。它是一個SQL標準嗎? – macc

+0

SQL標準並不討論實現的怪癖,就像MyISAM需要表鎖來實現其黑暗魔法一樣。老實說,MyISAM實際上並不值得使用,因爲這樣的事情,它是一個足以滿足MySQL 1.0的引擎,但已經過時了現代標準。儘可能使用InnoDB。它支持事務處理,在服務器崩潰的情況下可以安全地回滾日誌等等。 – tadman

+0

嗯,你的意思是我們找不到關於myisam讀鎖的官方上下文(即使myisam引擎的信息很少)。我應該放棄使用myisam引擎。 – macc

相關問題