关系型数据库的事务
A(atomicity)原子性:事务的原子性是数据库的逻辑工作单位,事务中的操作要么都做,要么都不做。
C(Consistency)一致性 :事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
I(Isolation)隔离性:一个事务的执行不能被其他事务干扰
D(Durability)持久性:指事务一旦提交,其对数据库中的改变是持久的。
并发控制
并发操作带来数据 不一致情况大致可以概括为: 丢失修改,不可重复读,读“脏”数据 , 产生幽灵数据
并发控制措施
在数据库环境中,进行并发控制的主要方式是使用封锁机制,即加锁,锁的基本类型有2中,排他锁(Exclusive Lock)和共享锁(share Lock)。
锁的相容矩阵
T 2 T1 | X | S | 无锁 |
X | 否 | 否 | 是 |
S | 否 | 是 | 使 |
无锁 | 是 | 是 | 是 |
封锁 协议 | X | S | 不丢 失修 改(写) | 不读脏数据 (读) | 可重复读(读) |
一级 | 事务全程加锁 | 不加 | Y | ||
二级 | 事务全程加锁 | 事务开始加锁,读完即释放 | Y | N | |
三级 | 事务全程加锁 | 事务全程加锁 | Y | N | N |
两段锁协议:
两阶段锁:是指所有的事务必须分为2 个阶段对数据进行加锁和解锁:
1 在对任何数据进行读写操作前,首先要获得对该数据将的封锁,
2 在是释放一个封锁后,事务不再申请和获得其他锁。