答案:数据库系统利用封锁机制来避免在多用户并发访问情况下数据的不一致性。在数据库系统中常用的是两种类型的封锁:排它锁(又称X封锁或X锁)和共享锁(又称S封锁或S锁)。只有当某数据对象没有被加上任何类型的封锁时,用户才能在该数据对象上施加X封锁。只有当某数据对象被加上S封锁或没有任何类型的封锁时,用户才能在该数据对象上施加S封锁。通过采用适当级别的封锁协议就可以避免常见的数据不一致性现象:
一级封锁协议:在用户以写操作(如:插入、删除和修改操作等)为目的开始访问某数据对象之前,首先必须申请对该数据对象的X封锁,并且将该X封锁维持到用户事务的结束。采用一级封锁协议可以避免’丢失修改’现象。
二级封锁协议:在一级封锁协议的基础上,在用户以读操作(如:查询、统计操作等)为目的开始访问某数据对象之前,首先必须申请对该数据对象的S封锁,并且可以在本次数据访问结束后的任一时刻释放该S封锁。采用二级封锁协议可以进一步避免’脏读’现象。
三级封锁协议:在二级封锁协议的基础上,要求用户所申请的S封锁也必须维持到用户事务的结束。采用三级封锁协议可以再进一步避免’不可重读’现象。