2017-07-16 70 views
0

dbms如何確保我們定義的檢查\ comstraints在提交後始終爲真?Db檢查和併發事務

我的意思是他們可能會使用特殊的技術,因爲只是在提交之前執行檢查,就像我們能做的那樣,由於多個事務同時進行而不會工作?

酸性能保證我們db狀態將永遠是一致的,無論多少事務並行運行?

感謝

回答

0

不同的數據庫使用不同的技術,但基本上,所有最終達到鎖定的東西,以確保事情不能被改變,以確保CONSTRAINT保持實際上並沒有改變。

programmerinterview.com

什麼是SQL的背景下,數據庫鎖?提供一個例子和解釋。

數據庫鎖用於「鎖定」數據庫中的某些數據,以便只有一個數據庫用戶/會話可以更新該特定數據。因此,存在數據庫鎖以防止兩個或更多數據庫用戶在相同的時間更新相同的確切數據。當數據被鎖定時,這意味着另一個數據庫會話無法更新該數據,直到鎖定被釋放(解鎖數據並允許其他數據庫用戶更新該數據。鎖通常由ROLLBACK或COMMIT SQL語句釋放。


這意味着,如果你INSERTa一排有一個FOREIGN KEY constrainto表b,在表b相應的行會鎖定直到交易結束,所以它不能被另一個併發事務刪除,直到你完成你的。

多版本併發控制數據庫可能會使用其他一些不同的技術;但它們的基礎是相同的。