一、事務并發控制s2pl和s2pl有何區別
2PL(2 Phase Locking), 鎖分兩階段,一階段申請,一階段釋放;S2PL(Strict 2PL),在2PL的基礎上,寫鎖保持到事務結束;SS2PL( Strong 2PL),在2PL的基礎上,讀寫鎖都保持到事務結束;Gen(SS2PL) ? Gen(S2PL) ? Gen(2PL),
Gen(XXX)表式生成的history/schedule。
簡單來說2PL無法保證事務是可恢復的。 這就是常見的臟讀異常,即讀到未提交事務的數據,如果該未提交事務中止,則會導致已提交事務的狀態不可靠。但注意,實際上這里的錯誤錯在事務T2不該提交,而不是讀了未提交事務(也可以讀了不提交)。
為了避免這一點,引入了調度的可恢復性,即如果事務Ti從事務Tj中讀到了元素x,在事務Ti提交前,事務Tj必須已提交。
保證了可恢復性的調度才是正確的調度。進一步為了簡化恢復難度,有更高的級別,比如避免級聯中止(avoid cascading abort),嚴格(strict)。
其中嚴格能保證事務中止的隔離性,即事務中止只需要獨立地撤銷自己的修改,不需要管其他事務。
而嚴格性在2PL中的實現,實際上就是持有寫鎖直至事務提交。
延伸閱讀:
二、什么是數據庫
數據庫就是英文的“database”翻譯來的,data + base,故名思義就是數據的根源,數據的基礎。那么為什么要有數據庫呢,數據庫首先是個計算機軟件,在所謂數據庫誕生之前,常用方法可能是程序員自己寫一個小程序來完成數據處理分析這樣的工作。
伴隨著計算機的普及,越來越多的場景開始使用計算機,產生了越來越多的數據,也催生了越來越多的數據分析需求。為了降低數據分析的門檻,讓更多人能夠更方便高效地管理分析數據,工程師們就打造了一種專門的軟件來幫助人們對數據進行合理的存儲以提高存取效率,提供易用的接口和豐富的分析算法以方便使用,集成有效的管理工具以提高數據安全性等等,這就是數據庫,也被稱為數據庫管理系統(DBMS,Database management system)。
數據庫是一整套數據管理體系,包括數據存儲的模型、數據組織的架構、數據分析的算法、數據管理的工具以及數據訪問的接口等等。