数据库的2PL两段锁协议与范式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库的2PL两段锁协议与范式相关的知识,希望对你有一定的参考价值。

1.2PL

2PL定义:1.所有的读写操作之前均需加锁;2.解锁操作后不允许再出现加锁操作;

S锁:加S锁后其他事务可读,不可写,直至加锁事务结束;

X锁:加X锁后其他事务均不可以读或写,直至事务结束;

事务执行的过程分为两个阶段,一是获得封锁阶段,二是释放封锁阶段;2PL可能产生死锁;

2PL可以防止读脏数据、丢失修改等;是事务可串行化的必要条件,不是充分条件;


可串行化:多个操作并发执行时,如不进行并发控制,可能出现错误的结果。但如果把所有并发操作全部串行执行,又失去了并发操作的优势。所以提出了可串行化的概念。可串行性:当且仅当一组事务的交叉执行结果与某一串行执行的执行结果一致时,这组事务具有可串行性;

2.一级锁、二级锁、三级锁

一级锁:所有写操作之前加X锁,事务结束释放,可以防止丢失修改;

二级锁;所有写操作之前加X锁,事务结束释放;所有读操作前加S锁,操作结束释放,可以防止丢失修改和读脏数据;

三级锁:所有写操作之前加X锁,事务结束释放;所有读操作前加S锁,事务结束释放,可以防止丢失修改、读数据和不可重复读;

二、范式

第一范式:属性不可分;

第二范式:所有非主属性完全依赖于码;

第三范式:符合2NF,同时没有传递依赖;

BC范式:符合3NF,且主属性不依赖于主属性;即若R属于1NF,且所有属性不传递依赖于码;每个非平凡依赖关系的左边均包含键码;每个依赖关键的决定因素必须包含键码;

4NF:要求把同一表内的n:m的关系删除;





本文出自 “江南矿工技术空间” 博客,请务必保留此出处http://jncumter.blog.51cto.com/812546/1782525

以上是关于数据库的2PL两段锁协议与范式的主要内容,如果未能解决你的问题,请参考以下文章

## 介绍锁机制 技术是为了解决问题而生的,锁被用来实现隔离性,保证并发事务的正确性。 ## 两段锁 & 一次封锁 两段锁 数据库遵循的是两段锁协议,将事务分成两个阶段,加锁阶段和解锁阶段

数据库的S锁和X锁,两段锁协议

MySQL 中的锁机制

MySQL 中的锁机制

MySQL 中的锁机制

并发控制-第五六七节:并发调度的可串行性两段锁协议和封锁的粒度