數據庫鎖及隔離級別

數據庫隔離級別

數據庫事務具備ACID四種屬性即原子性、一致性、隔離性和持久性,這四種特性定義了一個事務的完整性,而隔離級別決定了一個事務的修改所產生的影響範圍,這種影響可能產生各類問題,我認爲事務的隔離級別的高低是事務實踐ACID四種特性的強弱有着直接的聯繫。
1.read uncommit即事務即使未提交,其所做的修改也對其餘事務可見,這就產生了髒讀問題。所謂的髒讀就是事務讀取了另一個事務未提交的內容;
2.read commit即一個事務從開始到提交,其所做的修改對其餘事務不可見,可是事務中屢次查詢的結果可能不同,因此這也叫unrepeatable read;
3.repeatable read便可重複讀,其解決了不可重複讀的問題,可是仍未解決幻讀的問題;不可重複讀指的是兩次讀取的內容不同,可是讀取的條數並無變化;幻讀指的是讀取的內容條數發生了變化;
4.serializable便可串行化,它解決了幻讀的問題;數據庫

數據庫的隔離級別依次加強,可是這也致使了數據庫的併發度在依次減弱,所以如何在隔離級別和併發度之間取得平衡,仍然是一個值得考量的問題;併發

數據庫鎖機制

首先區分開來樂觀鎖悲觀鎖和數據庫具體的鎖實現機制表鎖行鎖;樂觀鎖和悲觀鎖是一種思想是一種策略具體的實現方式有不少,表鎖行鎖等鎖機制是實現樂觀鎖和悲觀鎖的一種實踐方式;
1.悲觀鎖認爲數據有很大的可能性被破壞,因此它要求數據的整個處理過程都要在枷鎖的過程當中實現;在數據庫中表鎖和行鎖是具體的實現方式;
2.樂觀鎖認爲數據通常不會被改變,所以只在數據提交時才進行衝突檢測,若是發現有衝突則返回錯誤,由用戶決定如何處理;數據庫中通常經過數據的版本號來實現事務

相關文章
相關標籤/搜索