事务并发
数据库里面操作的是事务。
事务特性:
- 原子性:要么全做,要么不做。
- 一致性:事务发生后数据是一致的。
- 隔离性:任一事务的更新操作直到其成功提交的整个过程对其他事务都是不可见的,不同事务之间是隔离的,互不干涉的。
- 持续性:事务操作的结果是持续性的。
并发控制存在的问题:
- 丢失更新:两事务对同一数据更新时可能会覆盖,有问题。
- 不可重复读:事务1修改数据,事务2也修改,最终验算不正确。
- 读脏数据:出现rollback回滚操作时,另一个事务可能还是读取的之前的数据。
封锁协议
通过加锁来解决并发的问题。
X锁是排它锁(写锁),写操作之前加。其他事务不能再加任何形式的锁了。
S锁是共享锁(读锁),读操作之前加。其他 事务只能在对数据A加S锁
习题
解答:
1、隔离性就是其他事务不可见
2、D、C。共享锁还能再加其他锁,排他锁就说明锁都不能加了。