“数据库控制”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) |
Jihongchang(讨论 | 贡献) |
||
第3行: | 第3行: | ||
=== 1)数据库的控制功能 === | === 1)数据库的控制功能 === | ||
[[文件:数据库的控制功能.png|无|缩略图|600x600像素]] | [[文件:数据库的控制功能.png|无|缩略图|600x600像素]] | ||
+ | [[文件:数据库的控制功能 2.png|无|缩略图|600x600像素]] | ||
+ | √共享锁【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)事务的性质 === | ||
+ | 原子性:事务是原子的,要么做,要么都不做 | ||
+ | |||
+ | 一致性:事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态 | ||
+ | |||
+ | 隔离性:事务相互隔离。当多个事务并发执行时,任一事务的更新操作直到其成功提交的整个过程,对其它事务都是不可见的。 | ||
+ | |||
+ | 持久性:一旦事务成功提交,即使数据库崩溃,其对数据库的更新操作也永久有效。 |
2022年9月29日 (四) 10:52的版本
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)事务的性质
原子性:事务是原子的,要么做,要么都不做
一致性:事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态
隔离性:事务相互隔离。当多个事务并发执行时,任一事务的更新操作直到其成功提交的整个过程,对其它事务都是不可见的。
持久性:一旦事务成功提交,即使数据库崩溃,其对数据库的更新操作也永久有效。