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