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