扫一扫二维码
进群一起备考
查看更多当前 - 案例分析 - 数据库系统
案例题
2020年5月第3题
收藏
分享
#数据库系统
#第二版教材
#凯恩建议必须掌握
阅读以下关于数据管理的叙述,在答题纸上回答问题1至问题3。
某全国连锁药店企业在新冠肺炎疫情期间,紧急推出在线口罩预约业务系统。该业务系统为普通用户提供口罩商品查询、购买、订单查询等业务,为后台管理人员提供订单查询、订单地点分布汇总、物流调度等功能。该系统核心的关系模式为预约订单信息表。
推出业务系统后,几天内业务迅速增长到每日10万多笔预约订单,系统数据库服务器压力剧增,导致该业务交易响应速度迅速降低,甚至出现部分用户页面无法刷新、预约订单服务无响应的情况。为此,该企业紧急成立技术团队,由张工负责,以期尽快解决该问题。
分值(6分)
经过分析,张工认为当前预约订单信息表存储了所有订单信息,记录已达到了百万级别。系统主要的核心功能均涉及对订单信息表的操作,应首先优化预约订单信息表的读写性能,建议针对系统中的SQL语句,建立相应索引,并进行适当的索引优化。
针对张工的方案,其他设计人员提出了一些异议,认为索引过多有很多副作用。请用100字以内的文字简要说明索引|过多的副作用。
参考答案
索引过多的副作用有:
(1)过多的索引会占用大量的存储空间;
(2)更新开销,更新语句会引起相应的索引更新;
(3)过多索引会导致查询优化器需要评估的组合增多;
(4)每个索引都有对应的统计信息,索引越多则需要的统计信息越多;
(5)聚集索引的变化会导致非聚集索引的同步变化。
凯恩解析
索引本质上是用来加速数据检索的工具,但在数据库中建立过多的索引会带来额外的存储和维护成本。每次数据修改都会触发索引的更新,因此增加了系统的负担。同时,过多的索引可能导致查询优化器难以选择最优的查询路径,影响系统的整体性能。在数据库设计时,需要权衡索引的使用,确保其对性能的提升大于其带来的开销。