47第1卷 第19期
产业科技创新 2019,1(19):47~48Industrial Technology Innovation 对SqlServer数据库性能调整及优化的探讨
sql语句优化方式袁 超
(泰安市气象局,山东 济南 271000)
摘要:数据库是一种应用广泛的现代化信息技术类型,而随着应用的不断深入,数据库性能面对的挑战也越来越高。就目前来看,在系统开发中很少会考虑到性能方面的问题,这会导致后期应用的过程中一些潜在的数据库性能
问题不断爆发。本文将从数据库性能优化的目的以及内容入手,探讨基于SQL Server平台的数据库性能优化方法。
关键词:SQL Server;数据库;性能优化;迭代优化
中图分类号:TP311.13 文献标识码:A 文章编号:2096-6164(2019)19-0047-02
随着现代数据库应用业务的不断发展和扩展,用户对数据库性能的要求也在持续提高。一般情况下,面临性能问题的数据库多为大型数据库,需要存储海量的数据。而目前主流的数据库主要有微软的SQL Server、Oracle、IBM的DB2等几种,因此针对数据库调整优化的研究也应该从这几种数据库入手。其中微软的SQL Server对性能的研究更为深入。
1 数据库性能优化概述
1.1 数据库性能优化的目标
根据数据库的用途,其性能优化的目标主要集中在以下几个方面,1)缩短响应时间。响应时间指的是用户发出事务处理指令到后台系统处理指令并将第一条结果反馈给用户这一过程所所消耗的时间,它又两部分构成,分别是CPU处理时间和用户等待时间。因此想要达到优化目标,也可以从两个方面入手,即缩短系统服务时间或是用户等待时间。2)提高系统吞吐量。系统吞吐量指的是其单位时间内系统处理用户请求的数量,结合以往的经验,提高系统吞吐量的常规方法有两种,其一是缩短服务时间,这样就可以在资源环境相同的情况下做更多工作。其二是缩短总体响应时间,提高工作速度。3)减少磁盘读I/O读写次数。数据库在运行期间会执行不同类型的I/O操作,这些操作的开销时间多为毫秒级,直接影响到系统的吞吐量,其中磁盘I/O操作则是数据库影响的主要影响因素。4)提高数据库的命中率。在数据库运行的过程中,考虑到内存操作的开销较小,因而可通过使用内存提高数据访问的
效率,而具体操作需要根据内存的大小来进行,而降数据放入到内存中这一使用部分内存的应用就是缓存,这就涉及到一个重要的概念,缓存命中率,即数据库实例在缓存中查到数据的次数与数据库实例总的数据查次数的比值。1.2 性能优化涉及到的主要内容
数据库的性能优化是一个动态调整的过程,其涵盖的内容十分多样,具体包括以下以下几个方面。1)调优数据库。方案设计优化是数据库优化的首要环节,优秀的设计方案可以大幅度的提高数据库的性能,具体是根据系统需求对数据库进行科学的设计,内容分为物理设计和逻辑设计两个方面,前者主要是数据对象在磁盘上的分布方式、数据块设定等。后者则包括索引建立、视图建立、模式合并等内容。2)应用程序优化。结合以往工作经验,数据库性能优化提升总量中的40%为网络、硬件、操作系统等方面的优化所得,其余则为应用程序性能优化。而应用程序优化则SQL 语句优化和系统开发语言代码优化两部分,相较而言,前者更为重要,因为应用程序对数据库的操作是通过SQL语句的执行来实现的。因此应用程序优化的关键点在于SQL语句执行方式的优化调整,最常用的方法是建立合理索引,对劣质SQL语句执行方式进行调整,以此达到提高执行效率的目标。3)对内存分配进行调整。内存是数据库实例的重要组成部分,其功能是为数据库实例的运行提供信息存储服务,因此内存调优通常是在不影响其他程序运行的前提下尽可能的增大内存分配,以提高内存缓存命中率。因此在优化调整的过程中要充分考虑各类应用程序对内存的需求,盲目分配会对系统整体运行产生负面影响。除了减少非数据库应用程序内存开销之外,还可以通过增加物理内存的方式提高数据库的可用内存,但耗费的经济
作者简介:袁超(1980- ),男,山东桓台人,本科,工程师,主要从事信息网络方面研究。
产业科技创新 Industrial Technology Innovation
48Vol.1 No.19
成本更高。在具体实施优化之前,需要对数据库内存架构进行了解,包括内存总量、操作系统以及各类程序所需的内存大小。4)调整磁盘I/O。物理磁盘是数据库中各类数据的最终存储地点,而磁盘I/O读取则是数据库中性能消耗最大的操作,因此调整磁盘I/O 是提高数据库性能的重要内容。5)优化服务器参数设置。数据库运行是一个动态过程,在此期间经常会出现资源变化的情况,此时就需要对数据库配置参数进行调整,以达到最优运行的状态。
2 基于SQL Server数据库的性能优化
2.1 优化方法
结合上文内容,我们可以知道,数据库的性能优化是一个整体、动态的过程,不能简单的考虑某一方面,否则很可能会出现顾此失彼的情况,本文所探讨的是一种基于层次的迭代优化方法,即将数据库性能优化的过程划分为多个层次,并设置先后顺序,以此完成优化,使整个优化过程更具规范性和条理性。迭代性则是面向每个层次的优化过程而言,具体要点有三,分别是单步、前进和后退,单步是
指优化过程每次采取一个优化步骤,并对其取得的结果进行评估,若对数据库系统性能产生了积极影响,则执行下一步骤,即“前进”,若未能对数据库性能起到积极影响甚至产生消极作用,则回退该优化步骤,即“后退”。
基于层次的迭代性优化流程如下:首先,查看系统性能,并判断是否需要优化,若否则停止优化,若是则进入下一步骤确定调整对象,这一步需要根据不同的层次采取不同的方法和工具,SQL Server数据库最常用的工具为Index Tuning Wizard。通过数据库工具确定调整对象后,需要对数据库当前的状态进行保存,之后执行调整方案,判断结果是否是数据库性能获得提升,若是则保留该调整,并重新执行“查看系统性能”以及后续流程。若否,则需要回退到该优化之前的状态,重新执行整个流程。
2.2 SQL Server数据库优化常用的几种工具
采用基于层次的迭代优化法对SQL Server数据库进行优化的过程中,确定调整对象这一步骤实际上就是对数据库系统性能方面存在的不足和问题进行明确,这就需要使用到一些数据库优化工具,具体有三种,一是性能监视器,这是Windows 系统自带有一种性能监视工具Performance Monitor。二是SQL Server Profiler,这是SQL Server专门提供的一种图形化实时性能监视工具。三是Index Tuning Wizard,其主要用于对给定的系统负载量推荐索引方案。
2.3 SQL Server语句开销的评价标准
前文曾经提到过,数据库性能优化的最终结果会体现在语句的执行开销上,因为性能优化的主要目标是缩短执行所需时间、减少逻辑读次数,考虑到CPU 执行时间在环境条件不变的情况下具有较强的稳定性,所以将CPU的执行时间以及逻辑读次数作为SQL 语句执行开销的评价标准。
2.4 数据库系统性能优化的实施
在具体优化的过程中,首先需要对数据库系统各个层次是否存在性能问题进行分析,确定导致性能问题的具体原因。而面向不同层次所采用的方法则不同,如为了验证数据库索引是否合理,可通过Index Tuning Wizard工具对数据库系统的性能跟踪文件进行分析,在此基础上做出评估。而想要判断SQL语句是否存在劣质的,可使用SQL Server Profiler工具对系统性能进行跟踪,基于跟踪文件对所有语句的开销进行对比,出其中开销较大。针对数据库操作系统的优化需要从程序优先级、服务以及网络协议等方面入手。针对数据库服务器的优化,需要查询服务器参数说明以及与性能问题相关的参数,在此基础上通过对参数设置方式的研究,完成参数值的调整。针对内存、磁盘、处理器,可使用Windows系统自带的性能监视器获取相关数据,通过综合分析确定需要优化的方面以及具体的优化方案。其中衡量内存性能的计数器有三,分别是缓冲区命中率、页面平均寿命以及进程每秒写的缓冲区数量。磁盘的性能衡量计数器有三,分别是平均磁盘队列长度、磁盘繁忙时间百分比和磁盘每秒传输数量。处理器性能衡量的计数器有二,分别是处理器繁忙时间百分比和处理器队列长度。在对数据库性能进行监视的过程中,一旦发现某一计数器的数值长时间维持在正常水平以上,就应重点监视。3 
结语
SQL Server数据库的优化可采用基于层次的迭代优化方法,通过数据库性能监视器对其性能方面存在的问题进行分析确定,之后分层次通过迭代法进行针对性优化,实现数据库性能的全面提升。
参考文献:
[1] 刘春艳. 基于关系数据库性能优化策略的研究与实现[D].
西安:西安电子科技大学,2012.
[2] 杨柳. SQL Server数据库的性能分析与优化策略研究[J].
科技创新导报,2011,8(1):35.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。