阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】 某航空售票系统负责所有本地起飞航班的机票销售,并设有多个机票销售网点。以下为E一SQL编写的部分售票代码: EXEC soL SELECT balance INTO:

admin2016-09-08  4

问题 阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
    某航空售票系统负责所有本地起飞航班的机票销售,并设有多个机票销售网点。以下为E一SQL编写的部分售票代码:
    EXEC soL SELECT balance INTO:x FROM tickets WHERE flight=:flightno;
    printf(”航班%s当前剩余机票数为:%d\n请输入购票数:",  flightno,x);
    scanf("%d",  &a);
    EXEC soL UPDATE tickets SET balance =x =:a WHERE flight=:flightno;
    请根据上述描述,完成下列问题。
若将上述代码封装成一个完整的事务,则:
(1)在并发请求下的响应效率会存在什么问题?
(2)分析产生效率问题的原因。
(3)给出解决方案。

选项

答案(1)在并发请求下,查询剩余票数后,会等待用户的响应,此时数据被锁定无法修改,导致其他用户只能等待该用户购票结束后才可购票,降低了系统的并发度。 (2)产生效率问题的原因是事务划分不合理。 (3)应将查询剩余票数的指令置于事务外部,事务只负责用户购票。

解析 封装的事务由两条SQL语句构成,中间存在与用户的交互,等待用户输入购票张数,会造成长事务,加锁状态下,其他购票事务程序会长时间等待,严重影响系统的响应速度。应将查询票数从事务中分离出来,UPDATE指令独立构成一个事务。
转载请注明原文地址:https://jikaoti.com/ti/AwN7FFFM
0

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