2014-02-26 29 views
-1

我對MySQL中的事務和鎖定有些疑惑。事務與鎖定在mysql中

  • MySQL中的事務和鎖定與它們之間的相互關係有什麼區別?
  • 僅與DML(INSERT,UPDATE和DELETE)相關的事務還是與SELECT查詢有關?
  • 交易是否涵蓋截斷?

例如:

START TRANSACTION; 
SELECT * from XYX; 
UPDATE abc SET summary=788 WHERE type=1; 
TRUNCATE TABLE pqr; 
INSERT INTO ABL VALUE('OK'); 
COMMIT; 

回答

0

什麼是transaction

事務包括數據庫 管理系統(或類似系統)針對數據庫內執行的工作的單元,並且以獨立於其它事務的連貫和可靠的方式處理的 。

此外,還有一個documentation on MySQL site

什麼是database lock

的鎖具,爲讀鎖或寫鎖,則當多個用戶需要 併發訪問數據庫中使用。

所以,它是完全不同的東西,你不能'比較'它們。

0

這需要一個很大的解釋才能完全覆蓋你的問題。 簡而言之,交易是一個「原子操作」。如果它承諾全部內部承諾,如果內部全部回滾,則會回滾。

鎖是一種機制,可避免在並行/併發環境中出現髒讀和虛讀(以及兩個進程同時進行更新,彼此混淆)。 一般來說,事務級別定義了鎖策略。

幾乎所有東西都包含在一個事務中,包括select和truncate。

我建議你點擊書籍以瞭解交易級別,鎖定(策略,粒度,表現,死鎖,飢餓,貪婪哲學家......)