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

admin2021-02-03  49

问题 阅读下列说明,回答问题,将解答填入答题纸的对应栏内。
【说明】
某网上销售系统的部分关系模式如下:
订单表: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和用户2同时购买l份A商品,用户3查询和浏览A商品。三个用户对应事务的部分调度序列如表4-1所示(事务中未进行并发控制),其中T0时刻该A商品的库存
数量p nums为100。

请说明T4、T7时刻,用户3事务读取到的p_nums数值分别是多少。请说明T8时刻事务调度结果是否正确?若不正确请说明属于哪一种数据不一致性。

选项

答案T4时刻,p_nums的值为100。 T7时刻,p_nums的值为99。 事务调度结果不正确。 丢失修改。

解析 本问题考查事务并发可能会带来的并发问题。
根据题干描述,三个事务并发执行,T0时刻p_nums为100。到T4时刻,事务1和事务2均对事务内部的变量p_nums进行了减一操作,事务1和事务2的p_nums值为99,但均未写入数据库,因此此时事务3从数据库中读取的p_nums值应该依然是100。到了T7时刻,事务1将99的数值写入数据库,事务2也将99的数值写入数据库,并且覆盖了事务1写入的数值(虽然都是99),所以T7时刻事务3从数据库读取的p_nums值为99。
从上述描述中可以看到,到了T8时刻,事务1和事务2都完成了减一操作,但数据库中p_nums的值却是99(不是98),因此事务调度结果不正确,不属于串行化调度,属于丢失修改。导致不正确的原因是事务2的修改覆盖了事务1的修改,导致事务1的修改丢失了。
转载请注明原文地址:https://kaotiyun.com/show/GL0D777K
0

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