簡體   English   中英

如何鎖定MySQL或phpmyadmin中的表?

[英]how can i lock tables in MySQL or phpmyadmin?

我需要為排隊系統使用一張桌子。 該表將不斷更新。

例如,我網站上的多個用戶將添加他們的文件以供處理,我聽說當多個用戶同時進行更新時,表將變得無響應或類似的情況。

那么在這種情況下我需要鎖定表嗎? 我如何將鎖應用於mysql表?

通過不斷更新 ,您是說將其每秒追加10,000次嗎? 即使對於中端服務器,每秒仍然有10,000個機會可供其他用戶共享該表。

僅當需要將幾個相關操作作為一個單元進行時,才需要鎖定表。 在大多數情況下,將一系列操作包括在數據庫事務中就足夠了。 如果“恆定更新”僅insert sometable values ( ...) ,那么將很容易保證事務的一致性。

那么在這種情況下我需要鎖定表嗎?

所有表都可以被鎖定,沒有特殊類型的表。 就是說,當您陷入僵局時,請處理該問題。 隔離級別也是一個密切相關的主題。

我如何將鎖應用於mysql表?

LOCK TABLES語法 - 本文介紹了如何以及為什么要鎖定表。

一次執行多個更新時,您將陷入僵局。 諸如InnoDB之類的引擎將檢測到此情況,並使您的事務之一失敗(您可以重試,但只能重試整個事務)。

您可以通過表鎖定來避免這種情況,但是它會減少並發性。

諸如MyISAM之類的引擎(無論如何都不支持MVCC或事務)無論如何都隱式使用表鎖定。 這種表鎖僅在查詢期間存在。 在不再需要該表之后,它們會很快自動釋放(不一定要盡快,但很快)

我建議您不要使用LOCK TABLE,除非您確實需要這樣做。 如果遇到死鎖,請重試該事務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM