数据库控制
https://www.bilibili.com/video/BV1hg411V7Bm/?p=96
1)数据库的控制功能
√共享锁【S锁】
又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。
这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
√排他锁【X锁】
又称写锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁。
这保证了其他事务在T释放A上的锁之前不能再读取和修改A。
2)事务的性质
原子性:事务是原子的,要么做,要么都不做
一致性:事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态(比如转账业务的对两个账户分别的扣钱和加钱操作)
隔离性:事务相互隔离。当多个事务并发执行时,任一事务的更新操作直到其成功提交的整个过程,对其它事务都是不可见的。
持久性:一旦事务成功提交,即使数据库崩溃,其对数据库的更新操作也永久有效。
考点1:共享锁和排他锁
假设事务T1对数据D1加了共享锁,事务T2对数据D2加了排它锁,那么()。
A、事务T2对数据D1加排它锁成功
B、事务T1对数据D2共享锁成功,加排它锁失败
C、事务T1对数据D2加排它锁或共享锁都成功
D、事务T1对数据D2加排它锁和共享锁都失败 √
解析:
A、T1对D1加了共享锁,其他事务可以再对D1加共享锁,但是不能再加排它锁
B、T2对D2加了排它锁,其他事务就不能再对D2加任何锁
C、错的,同B
D、对,同B
考点2:事务的性质
事务有多种性质,“当多个事务并发执行时,任何一个事务的更新操作直到其成功提交前的整个过程,对其他事务都是不可见的。”
这一性质属于事务的()性质。
A、原子性
B、一致性
C、隔离性 √
D、持久性