《資料密集型應用》事務

2022-07-11 23:57:10 字數 1034 閱讀 3534

acid

原子性單個事務可終止並回滾,拋棄修改,資料庫狀態恢復

一致性後置檢查滿足資料庫約束,程式邏輯級別

隔離性只能看到提交事務的資料修改。

永續性事務執行結果被持久化,不會發生丟失。

事務隔離級別

讀(事務開始前)已提交:

髒讀:讀其他事務未提交前的資料改動。

髒寫:寫其他事務未提交的資料改動。

問題:(讀)引入事務間依賴,(寫)破壞事務一致性

解決:髒寫:寫阻塞,事務提交後釋放寫鎖

髒讀:1.事務提交後釋放寫鎖,讀寫阻塞

2.讀舊值

不可重複讀(讀偏差)

事務讀取的時間跨度包含了另乙個事務,db(t),t不一致導致資料不一致,故最先讀取的資料失效

解決方法:

快照隔離:讀事務開始時的資料快照(過程中其他事務提交不可見),寫鎖防止髒寫,讀寫不阻塞

實現:多版本併發控制,事務讀單一時間點的版本資料

讀已提交可看作單個查詢的快照,快照隔離對整個事務使用相同快照

快照可見性規則:

事務開始時獲取快照

忽略未結束的事務(隔離性),忽略中止的事務(原子性)

忽略之後提交的事務(最終可能丟失更新)

防止丟失更新

物件級別併發控制:

1.原子更新(讀-修改-寫入操作)單物件

2.顯式鎖

自動檢測丟失更新(快照隔離支援),終止並重啟事務

cas//引申:多副本時併發寫入,確認最新問題

寫偏差:只有可序列化能解決

前置條件(多物件)在事務提交前不再滿足

原因:幻讀導致前置條件(謂詞)不滿足

部分解決:db約束

可序列化

方案序列:限制:小,單分割槽

兩階段鎖:讀寫阻塞,持有鎖至事務結束,讀鎖公升級為寫鎖

缺點:存在資料依賴即同步

謂詞鎖:影響謂詞則同步

索引鎖:用範圍近似謂詞條件,在索引上鎖定,防止插入更新刪除

可序列化快照隔離(樂觀)

檢測事務間提交寫入:影響舊mvcc,即影響之前讀取

計算密集型 IO密集型 資料密集型

2 計算密集型任務雖然也可以用多工完成,但是任務越多,花在任務切換的時間就越多,cpu執行任務的效率就越低,所以,要最高效地利用cpu,計算密集型任務同時進行的數量應當等於cpu的核心數。3 計算密集型任務由於主要消耗cpu資源,因此,執行效率至關重要。python這樣的指令碼語言執行效率很低,完全...

CPU 密集型 計算密集型,IO密集型

1 cpu 密集型 計算密集型 計算密集型,顧名思義就是應用需要非常多的cpu計算資源,在多核cpu時代,我們要讓每乙個cpu核心都參與計算,將cpu的效能充分利用起來,這樣才算是沒有浪費伺服器配置,如果在非常好的伺服器配置上還執行著單執行緒程式那將是多麼重大的浪費。對於計算密集型的應用,完全是靠c...

cpu密集型 計算密集型 io密集型 簡介

cpu密集型 cpu bound cpu密集型也叫計算密集型,指的是系統的硬碟 記憶體效能相對cpu要好很多,此時,系統運作大部分的狀況是cpu loading 100 cpu要讀 寫i o 硬碟 記憶體 i o在很短的時間就可以完成,而cpu還有許多運算要處理,cpu loading很高。在多重程...