1. 程式人生 > 其它 >Shiro logout 302重定向,shiro 302解決方案

Shiro logout 302重定向,shiro 302解決方案

MVCC多版本併發控制

MVCC是在併發訪問資料庫時,通過對資料做多版本管理,避免因為寫鎖的阻塞而造成讀資料的併發阻塞問題。

 

1,和version思想差不多,innoDB下,開啟一個事務,mysql的表對應有3個隱藏列

DB_TRX_ID: 記錄操作該資料事務的事務ID;

DB_ROLL_PTR:指向上一個版本資料在undo log 裡的位置指標;

DB_ROW_ID: 隱藏ID ,當建立表沒有合適的索引作為聚集索引時,會用該隱藏ID建立聚集索引;

 

2.在開啟事務修改的時候,會把原資料存進undo log裡面,並把存的指標存在隱藏列DB_ROLL_PTR上,
同時這個DB_TRX_ID會加一,跟版本號一樣一樣的思想。

 

3.傳送提交的時候,之間提交就好,回滾的時候從隱藏列找到對應的undo log資料回滾。

 

undo log 具體怎麼回滾事務 ? 舉個例子:

insert:會在 undo log 中記錄下方才你 insert 進來的資料的 ID,當你 想 roll back 時,根據 ID 完成精準的刪除。

delete:會在 undo log 中記錄方才你刪除的資料,當你回滾時會將刪 除前的資料 insert 進去。

update:會在 undo log 中記錄下修改前的資料,回滾時只需要反向 update 即可。

select:別費心了,select 不需要回滾。

 

詳細請看:

https://zhuanlan.zhihu.com/p/52977862