阅读下列说明,回答问题,将解答填入答题纸的对应栏内。 【说明】 某网上销售系统的部分关系模式如下: 订单表:orders(o_no,o_date,o_time,p_no,m_no,p_price,nums,amt,status)。其中属性含义分别为:订单号

admin2021-02-03  30

问题 阅读下列说明,回答问题,将解答填入答题纸的对应栏内。
【说明】
某网上销售系统的部分关系模式如下:
订单表:orders(o_no,o_date,o_time,p_no,m_no,p_price,nums,amt,status)。其中属性含义分别为:订单号、订单日期、订单时间、产品编码、供应商编码、产品价格、产品数量、订单金额、订单状态(0-未处理、1-已处理、2-已取消)。
产品表:products(p_no,p_name,p_type,price,m_no,p_nums)。其中属性含义分别为:
产品编码、产品名称、产品类型、产品价格、供应商编码、库存数量。
为保证并发事务的正确性,系统要求所有事务需遵循两段锁协议。
(1)用100字以内的文字简要解释两段锁协议,并说明“两段”的含义。
(2)请说明两段锁协议是否可以避免死锁?如不能避免,应采取什么措施解决死锁问题。

选项

答案(1)两段锁协议是指对任何数据进行读写之前必须对数据加锁;在释放一个封锁之后,事务不再申请和获得任何其他锁。 “两段”的含义是:事务分为两个阶段,第一阶段是获得封锁,称为扩展阶段:第二阶段是释放封锁,称为收缩阶段。 (2)两段锁协议不能避免死锁。 解决措施是采用死锁检测机制,发现后按照一定算法解除死锁。

解析 本问题考查两段锁协议的基本知识。
两段锁协议是指对任何数据进行读写之前必须对数据加锁;在释放一个封锁之后,事务不再申请和获得任何其他锁。
该协议明确所有事务必须分两个阶段对数据项加锁和解锁:第一阶段是获得封锁,事务可以对数据加读/写锁,但不能释放,也称为扩展阶段;第二阶段是释放封锁.事务可以释放前面对数据加的读/写锁,但不能再申请加锁,也称为收缩阶段。
两段锁协议不能保证完全避免锁死的发生,当两个满足两段锁协议的事务并发运行时,如果两个事务对两个资源进行了交叉锁定,死锁就必然发生。
因此DBMS必须要提供死锁检测机制,以实时检测死锁的发生,并根据某种策略解除死锁。
转载请注明原文地址:https://kaotiyun.com/show/LL0D777K
0

相关试题推荐
最新回复(0)