資料庫本地事務

2021-10-08 18:01:12 字數 769 閱讀 6465

乙個事務可以讀取到另乙個事務未提交的內容,就是髒讀

讀取不到未提交的資料,讀的還是原始資料,只有事務提交後了才能讀取到

在乙個事務執行過程中,不管對方事務有沒有提交,讀取到的資料都是一致的

事務被排成隊,乙個個去執行

隔離性和一致性可以通過事務去實現,但是原子性和永續性是靠undo和redo實現的

為滿足原子性,在運算元據之前,會將資料被分到undo log中,然後再執行修改,如過執行了rollback操作,系統可以將undo log資料恢復到事務開始前的狀態

undolog和資料都是先寫入記憶體中,然後再寫入磁碟,事務只要提交了,資料肯定會被寫入磁碟中,這就是永續性

和undo log相反,redo log記錄的是新資料的備份。在事務提交前,只要將redo log持久化即可,不需要將資料持久化,減少了磁碟io讀寫次數,如果資料庫宕機重啟後,可以直接從redo中讀取資料,資料寫入磁碟是在事務提交後非同步寫入磁碟,實際上資料已經寫入到redo log中了

同樣是寫入,為什麼寫到redo log就比直接將資料寫入磁碟要快呢?

因為有兩種寫法,一種是隨機寫入,隨機寫入時這個空間是隨機的所以寫入需要轉動磁碟定址,這個很耗費時間。還有一種是順序寫,順序寫是在磁碟中開闢一條連續的空間,這樣磁碟就不需要定址,而redo log就是採用的是順序寫入

為什麼mysql資料寫入不可以使用順序寫入?

因為mysql的表結構比較複雜,而且還會有索引,而索引是b+樹,所以不可以使用順序寫入

undo log在真實情況下其實並非寫入磁碟,而是寫入redo log中的

資料庫事務

事件是訪問並可能更新各種資料項的乙個程式執行單元。事件由事務開始與事務結束之間執行的全體操作組成。為了保證資料完整性,資料庫系統需要維護事務的以下性質 原子性 atomicity 事務中的操作要麼全部成功,要麼全部失敗。一致性 consistency 事務執行前後要保持資料庫的一致性。隔離性 iso...

資料庫 事務

資料庫事務 database transaction 是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將一組相關操作組合為乙個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使應用程式更加可靠。乙個邏輯工作單元要成...

資料庫事務

這段時間面試,由於基礎不是特別好,遇到一些要筆試的公司。就會表示出來 今天有人問我,資料庫事務 是什麼。我只感覺十分熟悉。但是又說不出所以然。回來找了一下,現在整理記錄 1 定義 資料庫事務 database transaction 是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務...