并发控制
DBMS中的并发控制的任务是确保在多个事务同时存取数据库中统一数据时不破换事务的隔离性以及数据库的统一性。
例:现有两处火车票售票点,同时读取某一趟列车车票数据库中车票余额为 X。两处售票点同时卖出一张车票,同时修改余额为 X -1写回数据库,这样就造成了实际卖出两张火车票而数据库中的记录却只少了一张。产生这种情况的原因是因为两个事务读入同一数据并同时修改,其中一个事务提交的结果破换了另一个事务提交的结果,导致其数据的缪盖被丢失,破换了事务的隔离性。并发控制要解决的就是这类问题
封锁、时间戳、乐观锁和悲观锁是并发控制的主要技术
锁:当并发事务同时访问一个资源时,有可能导致数据不一致,因此需要一种机制来讲数据访问顺序华,以保证数据库数据的一致性。锁就是其中的一种机制。
锁的分类
1、按操作分:DML锁、DDL锁
2、按锁的粒度分:表级锁、页级锁、行级锁
3、按锁的级别分:共享锁、排他锁
4、按加锁方式分:自动锁、显示锁
5、按使用方式分:乐观锁、悲观锁
DML锁(数据锁),用于保护数据的完整性,其中包括行级锁(Row Locks)、表级锁(table lock).DDL锁(数据字典锁)用于保护数据库对象的结构,如表、索引等结构定义。其中包括排他DDL锁、共享DDL锁、可中断解析锁