您的位置:首页 > 数据库

SQL Server DBA 必须了解的性能调优要点

2014-08-19 21:38 429 查看
这篇文章概述了SQL Server性能调优中的各种选项和工具。性能调优是一项迭代前行且永无止境的一项工作。典型的性能调优方法有

实例级别
数据库级别
应用程序级别



                       

在创建伊始就对SQL Server进行优化是性能调优的首要工作。要建立一个高性能的数据库应用程序,你必须先对数据库有一个合适的设计,并且考虑以下步骤

优化业务规则
优化逻辑和物理设计
对应用程序进行优化
对数据库服务器进行调优
对相应平台进行优化

                     
应用优化 - 确保你的应用的效率平衡。

关系型数据库管理系统特点

例子: 数据库查询前进行计算和统计。

支持模式对象。

例子:在进行数据聚合和计算时选择合适的索引。

优化数据库操作

例子:查找最消耗资源的语句。 利用系统工具栏的统计工具,例如解析,CPU时间和物理读取。为了减少查询对系统资源的占用,你可以使用各种途径,例如创建合适的索引,或者为帮助查询优化器选择最佳执行计划而添加查询统计。增加提示以取代默认的查询优化器设置。另外,优化SQL访问路径也是重要的一步。你需要逐步优化SQL访问路径以获取你的数据。如果查询优化器没有选择最佳执行计划,你可以通过查询提示或者查询规划强制改变执行计划。

                 
SQL Server的查询优化器是基于成本的优化器,它选择的执行计划是基于估计过的执行成本。依据估算的行的数目和经过查询得出的数据量,不同的操作将会有有不同的估算执行成本。如果实际行数远远大于执行计划估算的的行数,这是优化器指标出现了问题。可以提供更多的信息给优化器用于解决这个问题。可靠的数据分布信息是非常重要的。SQL Server会依据一些数据限制自动更新统计信息。
                         
实例优化 - 优化资源在发现瓶颈环节当中同样重要。例如:内存分配和内存利用必须实现平衡。通过不同的文件访问需求和不同的设备读写的分发,分开不同的文件以实现读\写优化。降低或者消除锁,锁存器,块头和队列的冲突。其中一个选择就是数据压缩。数据压缩可以通过减少读\写内存对象的次数,从而提高效率。
                        
SQL Server 性能优化工具

图形化实时监视工具 - 可以查看数据库上的任何操作的记录,包括读\写统计,CPU使用统计,索引和表的扫描,执行计划和其他统计信息,以便我们优化SQL 和 T-SQL

分布式回放 - 分布式回放是一个包含在SQL Server 2012产品中的全新工具,我们可以通过它进行可扩展性测试或者估量硬件或者操作系统升级对数据库的影响。

性能数据收集器 - 它是完全整合于数据库系统的工具,通过它,我们可以在一台或多台SQL 服务器上收集大量的性能指标信息。同时,亦可以把数据存储于中心数据仓库。

数据库引擎调整顾问 - 这是一个数据库物理设计的工具,通过它可以帮我们优化索引和分区。

性能监测器 - windows工具,一个在硬件,操作系统,数据库和应用层面的计数器,以监测性能数据。 

使用数据压缩器 - 这个工具向导提供实现行压缩和页压缩的选项。并且通过工具向导或脚本计算数据压缩的效率。

                        
打开数据库表:订单明细表, 它有 1.2 万行。如果你看 Data 和 Index space ,它大约有 15MB。通过压缩我们可以降低其大小。





同下图,打开压缩向导





你可以使用压缩向导选择压缩等级





选择压缩类型页并点击“计算”,它将显示现有空间和压缩所需空间。你也可以用下面的SQL语句压缩表。





压缩完毕后表的细节如下:





                
使用分析器捕捉 SQL Server 中的 SQL事件

在 「SQL Server Management studio」 的 「Tools」 选项中打开 SQL 分析器。





然后选择分析模板及保存轨迹的文件。





通过操作「事件选择器」指定事件。例如,为了查看查询执行计划的执行,在列表中选择 Show Plan XML 事件并点击「运行」





你能看到分析结果中的事件





打开 SQL 分析器时,你可以设置不同的过滤项,在追踪「追踪属性对话框」中点击过滤按钮并指定条件。同下图:





同样,你可以指定或创建包含 SQL 语句的追踪定义文件,同下图所示,你可以选择能在不同服务器运行的版本。





                  
T-SQL Hints

在查询中强制使用 HASH 连接,语句以及执行计划的示例如下









你将注意到,执行计划使用合并连接。通过强制 Hash 连接执行上面的语句将获得更好的性能。





使用 OPTIMIZE FOR 作为 T-SQL hint,示例如下





执行语句时移除锁定同样能够改进执行计划。





当表拥有的行非常多时,你也可以通过表级别的锁定来代替行级别的锁定。





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql server 性能