Archive

Archive for the ‘Performance’ Category

[转]怎样进行你的SQLServer性能调优呢?

June 11th, 2010 Tony hu No comments

王成辉翻译整理,转贴请注明出自微软BI开拓者www.windbi.com
原帖地址
如果你曾经做了很长时间的DBA,那么你会了解到SQLServe的性能调优不是一个精密的科学。即使是,对于为最佳的性能找到最佳的配置也是很困难的。这是因为对于调优来说很少东西是绝对的。例如,一个性能调优可能对某一方面有用,可是却会影响其他的性能。

我曾经做过DBA,在最后7年的日子里,我总结了一套SQLServer调优的清单。当第一次进行SQLServer性能调优的时候,可以用它来作为一个向导。我经常被邀请去检查SQLServer并提供一些性能方面的建议。直到现在,我还没有真正写下一个贯穿整个性能调优过程的方案。但是当我做了越来越多的性能调优的咨询工作后,我现在决定花点时间整理出来。你将会发现它是很有用的,就象我发现对我的用处一样.

SQLServer性能监控

这套性能优化的清单将至少准科学的帮助你找出你的SQLServer任何明显的性能问题。说是这样说,SQLServer的性能调优仍然是很困难的。我试图用这套清单去找出“容易”的sqlserver性能问题,困难的留待稍后。我这样做是因为很容易将容易和困难的的性能调优问题搞混。通过列出一个“容易”的性能调优范围,就很容易的将这些问题解决,一旦解决了这些容易的问题,那么你就能集中去解决更困难的问题。

使用这个SQLServer性能调优清单的一个好处是,它将不仅仅告诉你目前最容易解决的性能问题是什么,而且还帮助你正确的去解决。在某种程度上,你可以选择不同的顺序进行。换句话说,你可以故意做出特殊的决定而不是按照清单通常的顺序进行。某种意义上说你是对的,不是所有的性能调优建议都适合所有的情形。另外,你的决定是基于你的资源限制,例如没有足够的钱去买满足负荷的硬件。如果真是那样的话,你就别无选择了。还有,你的决定可能基于一些政治原因,那是你不得不作出的改变。不管怎样,你需要知道你能做什么,使用这个性能调优清单找出你能改变的范围并做出相应的改变提升你的SQLServer的性能。

一般来说,你将在你的每一个SQL服务器上执行这个清单。如果遇到清单中的一些问题,这会花掉你一些时间。我建议你从目前性能问题最多的的服务器开始,然后当你有时间的时候按照自己的思路去解决其他服务器。

一旦你完成了,可仍然有很多事情要去做。记住,这些只是一些容易的。一旦你完成了这些容易的,接下来你需要花时间去解决更困难问题。这个是另一篇文章要解决的问题了。
为了使其变得容易,我把它们分成了以下几个部分:

  • 使用性能监视器找出硬件瓶颈
  • SQLServer硬件性能监控列表
  • 操作系统性能监控列表
  • SQLServer2000配置性能监控列表
  • 数据库配置设置性能监控列表
  • 索引性能监控列表
  • 应用程序和T-SQL性能监控列表
  • SQLServer数据库作业性能监控列表
  • 使用Profiler找出低效的查询
  • 怎样最好的实现SQLServer性能监控

管理你的SQLServe性能的最好方法是首先回顾上面每一部分的内容,把它们打印出来。然后完成每一部分的内容,写下你收集到的结果。你也可以按照你喜欢的顺序进行。上面的步骤仅仅列出了我执行的顺序,因为那样通常能达到一个比较好的效果。

一旦你完成其中一部分,你可以按照在清单中发现的不同的建议进行你的性能优化工作。然后你将在后面的部分学到更多。

因文章太长,请下载word版全文:

怎样查出SQLServer的性能瓶颈

Categories: Performance, SQL, Sql Server Tags:

SQL语句执行效率及性能测试

June 11th, 2010 Tony hu 3 comments

通过设置STATISTICS我们可以查看执行SQL时的系统情况。

选项有PROFILE,IO ,TIME。介绍如下:

SET STATISTICS PROFILE ON:显示分析、编译和执行查询所需的时间(以毫秒为单位)。
SET STATISTICS IO ON:报告与语句内引用的每个表的扫描数、逻辑读取数(在高速缓存中访问的页数)和物理读取数(访问磁盘的次数)有关的信息。
SET STATISTICS TIME ON:显示每个查询执行后的结果集,代表查询执行的配置文件。

使用方法:打开SQL SERVER 查询分析器,输入以下语句:

SET STATISTICS PROFILE ON
SET STATISTICS io ON
SET STATISTICS time ON
Go –你的SQL脚本开始
Select * From Customer where name like ‘江苏扬子江药业%’
Go –你的SQL脚本结束
SET STATISTICS profile OFF
SET STATISTICS io OFF
SET STATISTICS time OFF

Categories: Performance, SQL, Sql Server Tags:

Sql Server 查看执行效率低下的SQL语句

June 8th, 2010 Tony hu No comments
–在测试功能时,先以下命令清除sql server的缓存
–DBCC freeProcCache
–再点击按钮,执行完后,再执行下面语句,就可以知道系统运行什么Sql和多少次了,其主要慢语句是那些了;

SELECT creation_time N’语句编译时间’
,last_execution_time N’上次执行时间’
,total_physical_reads N’物理读取总次数’
,total_logical_reads/execution_count N’每次逻辑读次数’
,total_logical_reads N’逻辑读取总次数’
,total_logical_writes N’逻辑写入总次数’
,execution_count N’执行次数’
,total_worker_time/1000 N’所用的CPU总时间ms’
,total_elapsed_time/1000 N’总花费时间ms’
,(total_elapsed_time / execution_count)/1000 N’平均时间ms’
,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset END
- qs.statement_start_offset)/2) + 1) N’执行语句’
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
where SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset END
- qs.statement_start_offset)/2) + 1) not like ‘%fetch%’
ORDER BY total_elapsed_time / execution_count DESC;

Sql2005 performance tuning (1)

September 1st, 2009 Tony hu No comments

1.影响数据库整体性能的因数:
数据库的结构设计 > 查询最优化 > 索引 > 锁定 > 调整服务器的软硬件
可见 数据库的基本结构设计对数据库的整体性能的影响最大。而硬件相对来说是最小的。

2.一个好系统性能的基本要素
系统各个环节都有最好的性能(开发团队,系统架构 etc.)

良好的数据库设计(前端程序不要直接访问Table,而应该用View, stored procedure 或 User define function)

开发过程中的压力测试应该高于用户的标准。

3.什么是性能调校

通过调校的目标是以用户的期望为依据,即符合用户的期盼即可。

Categories: Performance, Sql Server Tags: