SQL server数据库性能优化策略探析

2014-08-15 00:43宋国平
吉林广播电视大学学报 2014年5期
关键词:管理系统数据库性能

宋国平

(吉林广播电视大学,吉林 长春 130022)

随着计算机网络的应用范围的推广,各种信息系统、尤其是基于互联网的管理系统已经在人们生产生活的各个领域得到广泛应用,一些规模较大、高并发、大数据访问比较频繁的信息数据库系统的性能越发受到人们的重视。由于数据库是信息系统的核心和基础,因此,一个系统性能的优劣在相当程度上要受数据库设计的影响。

SQLServer是Microsoft公司开发的大型关系型数据库管理系统,是Windows平台下的主流数据库产品之一,被广泛用于多种信息管理系统中,所以研究Windows平台下的SQL Server数据库优化对于管理系统性能的提升是非常必要的。

数据库优化就是在一定的计算机系统资源下,尽可能提高响应速度和服务质量,它涉及数据库设计、应用程序设计和接口设计等多个方面,取决于应用需求及系统开发人员的专业素质、经验和技巧,是一个相当复杂的工程。数据库设计方案是数据库系统优化的关键,一个合理的数据模型,不仅是系统正常运行的基础,也能有效降低编写代码和维护的难度,提高系统的实际运行性能。一个优秀的数据库设计要在充分了解用户需求的基础上,严格按照软件工程的规范和流程来进行,要充分保留各种文档资料,在这个大前提下,还要从以下几个方面进行优化:

一、数据表设计的优化策略

通常数据库基本表的设计遵循以下基本原则:1、标准化和规范化。表设计标准有几种,一般来说3NF标准在实现数据库性能、系统扩展、消除数据冗余和实现完整性方面最佳平衡。2、应用数据驱动。不要使用硬性编码,而应采用数据驱动方式,有利于实现策略变更和维护,提高系统的可扩展性。

在基本表设计中,索引设计和选择十分重要,对于数据库的整体性能影响很大,这就要求我们对每一种索引要选择相应的优化策略。

1、簇索引(Clustered Index)。每个表只能有一个簇索引,用于决定表内数据的物理顺序,所以应在非簇索引前建立。在创建和选择簇索引时应遵循以下原则:(1)包含较多完全不同数据的列;(2)返回大量结果的查询;(3)使用“BETWEEN”及关系运算符返回的查询;(4)需要对单个的行进行快速扫描的OLTP类型的应用;(5)经常被包含有连接或GROUPBY子句查询进行访问的列。而对于经常作更新和较宽的键值,则不适合选择簇索引。

2、非簇索引(Nonclustered Index)。与簇索引不同,首先其数据存储顺序与索引的顺序不同,其次,它只存放数据行的引用。因此,它需要存放在一个堆上或簇索引上。如果在管理系统中需要多种途径来搜索数据,则非簇索引可以有效提高性能。应在以下情况选择创建非簇索引:(1)不会返回大量结果的查询;(2)经常在返回精确匹配的条件查询被引用的列;(3)包含大量完全不同数据的列,并且在某个列上已建立了簇索引;(4)系统应用中经常使用分组和连接;(5)覆盖整个表的所有列的查询。

索引的创建一方面可以有效提高系统的性能,但也会带来时间和空间的负面影响,因此在设计时应从多个角度来进行平衡,因此要杜绝建立无效索引,如果负面影响较大,则应考虑采取临时表等替代措施来提高系统的性能。

二、数据库其它对象的存放策略

除了基本表外,数据库中还包括许多其它对象,这些对象的存储也是影响系统性能的重要因素。对象的存储和访问离不开I/O设备,而I/O设备通常是影响大型数据系统库性能的瓶颈,所以在进行数据库设计时也要充分考虑这些对象的存储,才能提高系统的性能。

(1)大型系统通常使用多个磁盘,要避免系统I/O瓶颈,就要充分利用硬件系统的并行I/O机制,因此数据存放应跨越多个设备,不同性质访问的数据要分别存放。

(2)大型信息系统的事务日志是影响系统性能的重要环节之一,无论是从减少系统开销角度,还是从系统障碍恢复的角度出发,都应存放在单独的磁盘上,即将系统的日志文件与数据文件分开存储。

(3)将访问频度高低不同的表分别存储,可以充分利用系统的并行机制,提高系统的I/O性能。

三、查询分析设计的优化策略

由于管理系统对数据库的操作主要是数据查询操作,数据库设计离不开应用系统的设计,二者是相辅相成,密不可分的。因此对应用系统的设计优化主要是对查询语句的设计优化,要在遵循尽量使用连接替代子查询和简化逻辑读和扫描次数的大原则下,针对所要解决的问题进行具体分析,优化系统性能。

1、由于存储过程的执行效率要高于SQL语句,因此应尽可能设计和使用存储过程;

2、尽可能充分利用查询优化器的自动优化功能,查询代码设计要改善可能符合查询优化器的规则,从而有效避免全表扫描;

3、必要时采用临时表,避免使用大量排序操作;

4、因为游标的使用对系统性能有较大影响,所以要有限制地加以使用;

5、在使用了Where子句的查询代码中尽可能少使用复杂的表达式和“或”逻辑运算进行连接;

6、除非必要,要杜绝向客户端返回大量数据,减少网络数据传输量;

7、充分使用批处理语句和对重复操作使用参数数组。

四、基本表扩展设计优化

尽管基于3NF设计的数据库表应用范围很广,有着很强的优越性。但是在有些实际应用中存在不利于系统优化的因素,因此,需要根据具体的应用、对于规模非常大的数据库、请求访问的频度等各个因素,对部分表进行必要的行与列的分割、根据实际情况存储冗余数据和衍生列、进行相关分割表合并处理。这些措施虽然会破坏了3NF、增加部分系统开销,但能够充分利用设备的物理特性和Cache技术,可在一定程度上优化整个系统的性能。

五、锁的优化策略

锁是多用户条件下系统实现并行处理的一个重要机制,应用这一机制能够有效保持数据的一致性和完整性。但是锁的应用在一定程序上会影响系统的性能,因此如何减少和杜绝死锁是数据库系统设计和应用设计必须研究的一个课题。

在应用程序设计时使用锁应遵循以下几个原则:

1、根据实际问题对长事务进行分解,从而有效减少排它锁的占用时间;

2、充分利用批处理语句,减少在事务执行过程中的交互,避免人为控制事务的长短;

对于访问频繁、并发度较高的数据库应用系统,可采用相应的优化措施从而避免死锁,如:对每个查询使用超时机制、使用带约束的连接、适度平衡使用行锁、页锁及表锁等,从而有效避免死锁。

总之,数据库系统的优化是一个复杂的系统工程,涉及的因素非常多,在此不可能全部探讨。总体来说,都要从结构设计优化和行为设计优化两个视角加以探讨,结构设计是设计数据库框架或数据库结构,行为设计则是设计应用程序、事务处理等。对数据库的优化应从以上两个方面入手,分析问题需求,采用多种措施相结合的策略,这样才能有效实现SQLServer数据库的优化,保证系统高效、可靠的运行,从而提高整个信息系统的性能。

[1]徐海蔚.MicrosoftSQLServer企业级平台管理实践[J].电子工业出版社,2010,(2).

[2](美)RobertVieira.SQLServer2008编程入门经典(第三版)[M].清华大学出版社,2010,1.

猜你喜欢
管理系统数据库性能
基于James的院内邮件管理系统的实现
提供将近80 Gbps的带宽性能 DisplayPort 2.0正式发布
基于LED联动显示的违停管理系统
海盾压载水管理系统
数据库
数据库
数据库
数据库
Al-Se双元置换的基于LGPS的thio-LISICON的制备与性能表征
强韧化PBT/PC共混物的制备与性能