某大中型企业采用Oracle数据库建立一个经济信息统计方面的大型数据库应用系统。尽管配置了比较良好的硬件和网络环境,但该数据库应用系统实施后的整体性能表现较差。特别是随着业务量与信息量的迅速扩大,数据库系统的存取速度显著减慢,存储效率也明显下降。
该企业通过反复实践与摸索,并邀请数据库专家一起会诊,认为可以从以下4个方面进一步优化数据库应用系统。
(1)由于数据库应用中最主要的查询与修改数据操作大多需通过I/O来完成,因此需要通过调整服务器配置(即对硬件设备进行升级)、操作系统配置与数据库管理系统的有关参数,优化系统的I/O性能,尤其是改进磁盘I/O的效率与性能。
(2)优化“索引”的建立与使用机制,尽可能提高数据查询的速度或效率。
(3)合理使用聚类(Culster),改进查询响应时间和系统的综合性能。其中,“聚类”是指把单独组织的,但在逻辑上经常需要连接的,较为稳定的几个基本表聚集在一起(在物理上实现邻近存放),可以显著减少数据的搜索时间,从而提高性能。
(4)对应用系统中使用的SQL语句进行调优,针对每条SQL语句都建立对应的索引等。
在该企业所邀请的数据库专家的会诊建议中,选取合适的“索引字段”,对于索引实现的效率具有相当重要的作用。结合你的系统架构设计经验,请用200字以内的文字,指出选用具有哪些特征的字段作为索引手段较为合适。
参考答案:①该字段作为数据表中的主关键字或候选关键字。
②该字段能够唯一地标识记录或将记录进行较多细目分类。
③该字段与其他字段组合能唯一地标识记录或将记录进行分组。
④该字段是其他表的外键。
解析:对于大型数据库系统来说,索引机制可以在很大程度上提高数据查询的效率。但是索引是以空间为代价来换取时间的,而且一般仅当表的容量较大时,才能显现出索引的作用。通常情况下,优化索引的使用有以下两条主要途径。
(1)尽可能充分地去理解索引的基本原理和在本系统中使用索引时的一些规则,从而为正确使用索引奠定基础。比如,在某些谓词后不使用索引(如OR、NOT IN等),查询的记录数超过表总记录数的20%以上时不适宜使用索引,在另一些谓词后出现的索引字段会使用索引等。
(2)在有很多基本表的场合下,由多名开发人员大量创建不尽合理的索引,可能会显著降低系统的性能。根据应用的实际需要,合理地创建“索引”,在本数据库应用系统中可以考虑一些创建索引的原则或指导性规则。例如,原则上,对记录数较多的表,应尽可能考虑创建索引的可行性;在连接多个表的场合下,最好考虑采用索引;无相同值的字段可建立起“唯一性索引”(这时查询代化性能特别出色);对于只读的表可建立较多的索引,对于更新频度较高的表只能建立较少的索引;尽可能在数据加载之后再建立索引,以避免重新索引的开销;建立并设置复合索引时,应把最常用的索引字段放在前面,即保持相对合理的索引字段次序。
选取合适的“索引字段”,对于索引实现的效率具有相当重要的作用。通常情况下,选用具有以下特征的字段作为索引手段较为合适:①该字段作为数据表中的主关键字或候选关键字;②该字段能够唯一地标识记录或通过将记录进行较多细目分类:③该字段与其他字段组合能唯一地标识记录或将记录进行分组;④该字段是其他表的外键等。