事务并发控制
CMU15-445概览
2PL代表两阶段锁协议(Two-phase locking)。这是一种并发控制机制,用于关系数据库系统中以保障数据完整性。在这种机制中,事务的执行被划分为两个阶段:加锁阶段和释放锁阶段。加锁阶段发生在事务开始时,而释放锁阶段发生在事务结束时。这种划分确保了事务的原子性和隔离性,避免了死锁和活锁的情况。
enum class TransactionState { GROWING, SHRINKING, COMMITTED, ABORTED };
事务的四种状态 // 事务状态 {增长中,收缩中,已提交,已中止}
enum class IsolationLevel { READ_UNCOMMITTED, REPEATABLE_READ, READ_COMMITTED };
三种隔离级别,读未提交,可重复读,读提交
enum class WType { INSERT = 0, DELETE, UPDATE };
三种写入类型,插入,删除和更新
简而言之五种锁:
X exclusive锁,排它锁
S shared锁,读共享锁
IX intension exclusive 行排它锁
IS intension shared 行共享锁
SIX 共享意向排它锁如果需要修改表中的某些行,但需要读取整个表,这时候就可以给整张表加上SIX锁。可以看到它与IX锁的区别:加入SIX锁后,不能修改表的其它行,因为需要读整张表。
五种锁,详细介绍
五种锁,详细介绍
- 在收缩阶段加锁。
- 在收缩阶段解锁时出错
- 更新锁冲突,(另一个事务已经在等待升级这个锁)
- 死锁
- 在读未提交上加共享锁
enum class AbortReason {LOCK_ON_SHRINKING,UNLOCK_ON_SHRINKING,UPGRADE_CONFLICT,DEADLOCK,LOCKSHARED_ON_READ_UNCOMMITTED };