APP下载

关于SQL SERVER 数据库调优的分析

2013-02-27

网络安全技术与应用 2013年12期
关键词:系统优化语句消耗

尹 宇

(施耐德电气(中国)有限公司西安分公司 陕西 710075)

0 前言

随着企业应用的复杂度逐步加大,数据量也变的比以前多很多。优化SQL SERVER数据库成了,我们在开发应用的时候,刻不容缓的事情。

1 数据库优化步骤

(1)优化过程

数据库优化的步骤包括采集分析数据,制定优化方案,实施,评估。

(2)采集分析数据

根据不同数据库的情况,准备一些数据库的脚本,对采集数据来说非常重要。例如I/O的优化。在sql server的运行过程中,与硬盘交互的时候,如果读写不能顺利完成,数据库就有可能损坏。一个通常的规则就是,把日志文件和数据文件放在不同的物理盘中。

Dynamic Management Views可以检测I/O瓶颈。

数据库由于I/O引起系统系能下降时,可以通过以下SQL看到:

以下语句可以看到是哪个磁盘引起的瓶颈:

(3)制定方案

对于有风险的方案,一定要先备份数据库。制定方案的时候,要有开发人员,数据库专家,系统管理员来参加。

(4)实施

方案完成以后,要进行实施。实施一般是在业务空闲时间进行的。实施的过程中,应该有检查点。我们可以对着检查点,一项一项的去执行。当实施过程中出现问题的时候,要及时的调整策略,进行恢复。

(5)评估

要从系统和应用两个层面来评估,优化的结果。系统方面:CPU的使用,I/O的使用,系统内存,网络状态。应用方面:sql的响应时间,sql的执行计划,数据库负载情况。

2 系统优化

系统优化是资源配置的优化。系统优化的重点在于找到系统的瓶颈。由于有的时候,我们对系统不是特别的了解。优化起来就有困难。需要我们利用系统已经有的工具。例如:CPU性能调优。用windows任务管理器可以发现哪一个实例消耗了大量的CPU

图1 CPU资源消耗

通过以上图片我们可以看到是哪个实例消耗了大量的CPU资源,通过这种方法,我可以很方便的定位出消耗资源的实例。

3 数据库的优化

数据库消耗大的 sql语句,索引的设计,锁的应用等都是导致数据库变慢的很重要的因素。

(1)索引的设计

在经常变动的表上,索引不要过多。对于小表,不要建立索引。

数据库数据的变化,也会降低索引的性能,所以需要定期的重建索引。我们还可以用我们平时积累的脚本来分析索引的性能。

不要用SELECT *这样的语句,这样的语句会使索引失效,应用的时候,只列出需要查询的列。

(2)限定语句的复杂度

对于动态SQL,很多时候会让用户根据自己的条件进行组合查询,这样虽然功能强大。但是过多的选择条件,复杂的sql,会造成性能的下降。

最好使用临时表来存储大量数据。

对于性能低下的SQL语句,减少语句的logical reads是关键。 logical reads指执行时需访问的单位为8K的数据页总数。如果logical reads 越少,则需要内存和CPU时间就越少,语句执行速度就快。以下运行set statistics io命令可以得到logical reads。

如果Logical reads与返回行数相差大,就需要优化此语句。

4 总结

通过以上步骤,我们可以对我们的数据库进行优化。但是,优化一般不是一次就能够完成的。我们需要根据实际情况。进行多次优化,调整我们的计划,达到我们的优化目的。

[1] 白鳝,著.Oracle优化日记.人民邮电出版社.2012

[2] Mike Hotek,著.传思,译.SQL SERVER2008实现与维护.清华大学出版社.2011

[3] 徐海蔚,著.Microsoft SQL Server企业级平台管理实践.电子工业出版社,2010.

[4] www.mssqltips.com

猜你喜欢

系统优化语句消耗
玉钢烧结降低固体燃料消耗实践
转炉炼钢降低钢铁料消耗的生产实践
PS卧式转炉送风系统优化与实践
降低钢铁料消耗的生产实践
重点:语句衔接
我们消耗很多能源
基于大数据分析的ETC系统优化探析
火电厂循环水处理及系统优化探讨
某萤石矿开拓系统优化
如何搞定语句衔接题