事務補充(8)

2022-04-03 09:14:46 字數 715 閱讀 5126

mvcc

mysql裡,有兩個"檢視"個概念

乙個是view,它是乙個用查詢語句定義的虛擬表,在呼叫的時候執行查詢語句並生成結果。

另乙個是innodb在實現mvcc時用到的一致性讀檢視,即consistent read view,用於支援rcread committed,讀提交)和rrrepeatable read,可重複讀)隔離級別的實現。

innodb裡面每個事務有乙個唯一的事務id,叫做transaction id,它是在事務開始的時候向innodb的事務系統申請的,是按申請順序嚴格遞增的。

而每行資料也是有多個版本的。每次事務更新資料的時候,都會生成乙個新的資料版本,並且把transaction id賦值給這個資料版本的事務id,記為row trx_id。同時,舊的資料版本要保留,並且在新的資料版本中,能夠有資訊可以直接拿到它。也就是說,資料表中的一行記錄,其實可能有多個版本(row),每個版本有自己的row trx_id

事務單元 U鎖 MVCC補充

事務單元 商品建立個gmt modified的索引 讀取一行記錄 寫一行記錄,同時更新這行記錄的所有索引 刪除整個表 只要傳送了乙個請求過去就是個事務單元 以begin commit 之間是個大的事務單元 two phase lock 2pl 先讀再寫 begin trx read from a l...

Django資料庫補充之事務

往資料庫寫入資料時,如果寫入了不完整的資料,我們稱之為髒資料。事務管理 transaction 可以防止這種情況發生。事務管理一旦監測到寫入異常,會執行回滾操作,即要麼寫入完整的資料,要麼不寫入。在django中使用事務很簡單,我們來測試一下 from django.db import models...

補充6 SpringBoot事務實現

這裡小結下spring 中事務的實現思路,spring 主要依靠 transactioninterceptor 來攔截執行方法體,判斷是否開啟事務,然後執行事務方法體,方法體中catch住異常,接著判斷是否需要回滾,如果需要回滾就委託真正的transactionmanager 比如jdbc中的dat...