1.数据库中为什么要并发控制?并发控制技术能保证事务那些特性?
答:如果事务是串行执行,会让大部分资源得不到利用,数据库采用并发采用,使多个事务可以同时进行,充分利用系统资源,但这会使事务ACID特性遭到破坏,因此需要采用并发控制;隔离性、一致性。
2.并发操作可能产生哪几类数据不一致?用什么方法能避免不一致情况。
答:丢失修改(两事务同时修改)、不可重复读(一个事务读之后,另一个事务 进行了修改、插入、删除)、读脏数据(一个改,一读,但改的被撤销了)。可以采用封锁、时间戳和乐观控制法。
3.什么是封锁?基本类型有?试述他们的含义
答:封锁就是事务T对数据进行操作之前向系统请求加锁,加锁后T对数据有一定控制能力,
锁为释放,其他事务对该数据不能更新。
基本类型有排他锁(X锁),共享锁(S锁)。
排它锁指只有T可以对其进行读写操作,锁未释放之前,其他事务不可加锁,不可读
写该数据;共享锁指T可以进行读,锁未释放之前,其他事务只能加S锁,进行读操作。
4.什么样的并发调度是正确的调度?
答:可串行化调度,其结果与事务某一次序串行执行这些事务的结果相同。注意思考怎么得到不可串行调度:把所有串行执行列出来,找一个结果不等于他们的调度。
5.冲突可串行化调度
冲突操作是指不同事务对同一数据的读写、写写操作,如果在不改变冲突操作的次序下交换两个不冲突操作次序,结果是可以串行的,则称本身这个调度为冲突可串行化调度,其是可串行化调度的充分条件。
6.两段锁协议
指所有事务必须分两个阶段对数据项进行加锁和解锁
读写操作之前,首先申请封锁
释放封锁之后,不得再加锁
其产生的是可串行调度