你可能感兴趣的试题
该方法对数据库中事务访问的所有数据项规定一个加锁顺序 每个事务在执行过程中必须按顺序对所需数据项加锁 维护对这些数据项的加锁顺序很困难,代价非常大 事务按照固定的顺序对这些数据项进行加锁比较方便
一级加锁协议要求事务T在修改数据项Q之前必须先对Q加X锁,直到事务结束才释放该锁 二级加锁协议是在一级加锁协议基础上,要求事务T在读取数据项Q之前必须先对其加S锁,读完Q后可以立即释放S锁 三级加锁协议是在一级加锁协议基础上,要求事务T在读取数据项Q之前必须先对其加S锁,读完Q后可以立即释放S锁 对并发操作的不正确调度可能会导致数据库中数据的不一致,三级加锁协议暂时无法解决该问题
该方法对数据库中事务访问的所有数据项规定一个加锁顺序 每个事务在执行过程中必须按顺序对所需的数据项加锁 维护对这些数据项的加锁顺序很困难,代价非常的大 事务按照固定的顺序对这些数据项进行加锁比较方便
该方法对数据库中事务访问的所有数据项规定一个加锁顺序 每个事务在执行过程中必须按顺序对所需的数据项加锁 维护对这些数据项的加锁顺序很困难,代价非常大 事务按照固定的顺序对这些数据项进行加锁比较方便
一级加锁协议要求事务T在修改数据项Q之前必须先对Q加X锁,直到事务结束才释放 二级加锁协议是在一级加锁协议基础上,要求事务T在读取数据项Q之前必须先对其加S锁,读完Q后可以立即释放S锁 三级加锁协议是在一级加锁协议基础上,要求事务T在读取数据项Q之前必须先对其加S锁,读完Q后可以立即释放S锁 对并发操作的不正确调度可能会导致数据库中数据的不一致,三级加锁协议暂时无法解决这一问题
锁可以加在数据页、索引页和数据块等物理单元上,也可以加在元组等逻辑单元上 锁粒度会影响事务的并发执行程度,锁粒度越大,并发执行度越低,锁粒度越小,并发执行度越高 锁粒度会影响数据库的性能,锁粒度越小,系统开销越大,锁粒度越大,系统开销越小 一个好的数据库管理系统一般会选择一种锁粒度加以实现,同时针对此种锁粒度进行性能优化,以达到数据库运行的最佳状态
一个好的数据库系统应当根据用户需求,提供多种不同粒度的加锁单元供数据库用户选择 需要处理大量元组的事务可以以数据库为加锁单位 需要处理多个关系的大量元组的事务可以以数据库为加锁单位 对于一个处理少量元组的事务,可以以关系为加锁单位
当事务由于无法获得对需要访问的数据项的控制权而处于等待状态时,称数据库中产生了死锁 死锁是由于系统中各事务间存在冲突操作且冲突操作的并发执行顺序不当而产生的 死锁预防可以使用一次加锁和顺序加锁两种方法,其中一次加锁法可能会降低系统的并发程度 解除死锁通常采用的方法是选择一个或儿个造成死锁的事务,撤销这些事务并释放其持有的锁