APP下载

SQL Server数据库性能优化的几点分析

2017-01-13陈洁祝永健

中国新通信 2016年22期
关键词:性能优化数据库

陈洁+祝永健

【摘要】 随着网络技术的发展,数据库应用系统也不断扩展,数据量不断增加,对数据库性能进行优化,提高效率成为了数据库应用中的重要问题。因此,本文以常用的SQL Server数据库作为探讨对象,从数据库索引的有效利用、SQL语句的改善及SQL Server的分区三方面对SQL Server数据库性能优化提出分析意见。

【关键词】 SQL Server 数据库 性能优化

随着数据库应用系统的不断扩展,数据库用户数量的不断增多,需要处理的业务数据量在不断增加,数据库海量数据存储在迅速增长,数据库性能的好坏变得越来越重要。数据量的快速增长是数据库性能优化研究的主要驱动力,在当前已有的软硬件基础之上,如何在数据库应用系统中获得最大的吞吐量和提高系统的处理能力是目前数据库应用系统的一个研究热点。

一般情况下,数据库的优化指的就是查询性能的优化,让数据库对查询的响应尽可能的快。仅对数据库系统本身而言,影响到查询性能的因素从理论上来讲包括数据库参数设置,索引,分区,SQL语句。

一、有效的利用索引

索引在数据库的查询优化中起着至关重要的作用,一个数据库索引的好与坏,其查询性能相差很多倍。如何选择索引可显著影响所产生的磁盘 I/O,并因而影响查询性能。常用的索引有聚集索引、非聚集索引,对于非聚集索引,选择性很重要,因为如果在只有少量唯一值的大型表上创建非聚集索引,使用非聚集索引将不会节省数据检索中的 I/O。因为数据库中的索引都注重一种比较性,这样它可以快速的确定范围,定位位置,例如,某表的性别字段,非男即女,不具有可比性,如果以它为非聚集索引,查询的时候也只能一个个节点去比较。

在这种情况下产生的 I/O 可能比对表进行连续扫描所产生的 I/O 多得多。比较适合非聚集索引的有票据编号、唯一的客户编号、社会安全号码和电话号码,简单来说,就是基于某种可比较的,有规律的数据。

索引对于检索性能的提高有一定的帮助,但是更多的索引或是不正确的一定程度上会导致系统低效。由于用户在每次向表中添加一个索引时,数据库就得相对的做更多的工作。太多的索引甚至会产生索引碎片。因此,我们才需要建立一个“适当”的索引体系,尤其是在创建聚集索引的时候,更应该精益求精,确保数据库能够得到高性能的发挥。

二、有效改善SQL语句

SQL的语句大概有编译优化、执行、取值三个阶段,而第一阶段编译优化绝大多数情况下都要花掉60%的时间,所以变量的绑定是尤为重要的,SQL Server数据库有缓存区,存放一些最近使用过的SQL语句,当有一条SQL语句到达数据库服务器时,首先数据库会搜索缓存区,看它是否存在可以重用的SQL语句,如果存在,可以不用编译优化,因为缓存区里都是编译优化好了的SQL语句,直接可以执行,节约很多时间。

如果没有发现可以重用的SQL语句,则必须要完全经过语句编译分析,优化计划,安全检查等过程,这不仅仅会大量耗费CPU功率,而且还在相当长的一段时间内锁住了一部分数据库缓存,这样执行SQL语句的人越多,等待的时间越长,系统的性能会大幅度的下降。

三、合理利用SQL Server的分区

SQL Server的分区在一些超大型的表中是有着非常重要的作用。分区是逻辑上的一种区分,在数据访问的情况下,由于一个表就是一个整体,所以也就是对整个表或整个表的索引进行了访问,所谓分区,通俗点讲,就是把表按一定的规律划分成更小的逻辑单位,在进行数据访问的时候,不以表为单位进行访问,而是在表的基础上,判断数据在哪个分区,然后对特定的分区进行访问。正确的分区对于提高查询性能有很大的作用。例如,有一个非常大的表,存储了一些销售记录,现在查询总是按销售季度来执行这个查询,而每个销售季度包含几十万个记录,通常你只是要查询这个数据集的一个相当小的数据,但是给予销售季度的检索却的确是不太可行的。

这个索引可能指向无数个记录,而以这种方式执行索引范围扫描是可怕的。为了处理许多查询任务,系统需要执行全表扫描,但是结果却必须扫描几百万个记录,其中绝大部分不使用我们的查询任务。使用智能分区方案,就可以按季度隔离数据。这样当我们为任意指定的季度去查询数据时,结果将只是扫描那个季度的数据。这是所有可能的解决方案中最好的方案。

数据库优化是一个很广的范围,涉及到的东西也比较多,并且每个特定的数据库,其具体的优化过程也是不一样的。因为优化的很大一部分最终都要跟具体的数据库系统细节打交道,在此只能就常用的数据库以及经常用到的的东西进行一些分析,以期使数据库系统的效率得到提升,方便我们的使用。

参 考 文 献

[1]杨柳. SQL SERVER 数据库的性能分析与优化策略研究[J]. 科技创新导报2011,(1):15-19.

[2]刘芬. 关于SQL数据库的性能优化问题的研究[J]. 软件. 2012(06)

猜你喜欢

性能优化数据库
数据库
Web应用的前端性能优化
数据库
Oracle数据库性能调整与优化分析
数据库
数据库