2PL(2 Phase Locking), 锁分两阶段,一阶段申请,一阶段释放;S2PL(Strict 2PL),在2PL的基础上,写锁保持到事务结束;SS2PL( Strong 2PL),在2PL的基础上,读写锁都保持到事务结束;Gen(SS2PL) ⊂ Gen(S2PL) ⊂ Gen(2PL),Gen(XXX)表式生成的history/schedule。
一、事务并发控制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)。
数据库是一整套数据管理体系,包括数据存储的模型、数据组织的架构、数据分析的算法、数据管理的工具以及数据访问的接口等等。