sql server 2005 优化方法<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

一分析实例级的等待

--可能存在的性能问题

()IO等待;

()存储过程和代码的重新编译;

()tempdb数据库页可能是瓶颈;

--1 不用重新启动数据库实例,重置'sys.dm_os_wait_stats'

DBCC SQLPERF('sys.dm_os_wait_stats', CLEAR);

--2 查询累计值达到系统等待时间%的重量级等待

WITH Waits AS

(

SELECT

wait_type,

wait_time_ms / 1000. AS wait_time_s,

100. * wait_time_ms / SUM(wait_time_ms) OVER() AS pct,

ROW_NUMBER() OVER(ORDER BY wait_time_ms DESC) AS rn

FROM sys.dm_os_wait_stats

WHERE wait_type NOT LIKE '%SLEEP%'

-- filter out additional irrelevant waits

)

SELECT

W1.wait_type,

CAST(W1.wait_time_s AS DECIMAL(12, 2)) AS wait_time_s,

CAST(W1.pct AS DECIMAL(12, 2)) AS pct,

CAST(SUM(W2.pct) AS DECIMAL(12, 2)) AS running_pct

FROM Waits AS W1

JOIN Waits AS W2

ON W2.rn <= W1.rn

GROUP BY W1.rn, W1.wait_type, W1.wait_time_s, W1.pct

HAVING SUM(W2.pct) - W1.pct < 90 -- percentage threshold

ORDER BY W1.rn;

--3 找出高峰期

-- Create the WaitStats table

USE Performance;

GO

IF OBJECT_ID('dbo.WaitStats') IS NOT NULL

DROP TABLE dbo.WaitStats;

GO

SELECT GETDATE() AS dt,

wait_type, waiting_tasks_count, wait_time_ms,

max_wait_time_ms, signal_wait_time_ms

INTO dbo.WaitStats

FROM sys.dm_os_wait_stats

WHERE 1 = 2;

ALTER TABLE dbo.WaitStats

ADD CONSTRAINT PK_WaitStats PRIMARY KEY(dt, wait_type);

CREATE INDEX idx_type_dt ON dbo.WaitStats(wait_type, dt);

GO

-- Load waitstats data on regular intervals

INSERT INTO Performance.dbo.WaitStats

SELECT GETDATE(),

wait_type, waiting_tasks_count, wait_time_ms,

max_wait_time_ms, signal_wait_time_ms

FROM sys.dm_os_wait_stats;

GO

-- Creation script for fn_interval_waits function

IF OBJECT_ID('dbo.fn_interval_waits') IS NOT NULL

DROP FUNCTION dbo.fn_interval_waits;

GO

CREATE FUNCTION dbo.fn_interval_waits

(@fromdt AS DATETIME, @todt AS DATETIME)

RETURNS TABLE

AS

RETURN

WITH Waits AS

(

SELECT dt, wait_type, wait_time_ms,

ROW_NUMBER() OVER(PARTITION BY wait_type

ORDER BY dt) AS rn

FROM dbo.WaitStats

WHERE dt >= @fromdt

AND dt < @todt + 1

)

SELECT Prv.wait_type, Prv.dt AS start_time,

CAST((Cur.wait_time_ms - Prv.wait_time_ms)

/ 1000. AS DECIMAL(12, 2)) AS interval_wait_s

FROM Waits AS Cur

JOIN Waits AS Prv

ON Cur.wait_type = Prv.wait_type

AND Cur.rn = Prv.rn + 1

AND Prv.dt <= @todt;

GO

-- Return interval waits

SELECT wait_type, start_time, interval_wait_s

FROM dbo.fn_interval_waits('20060212', '20060215') AS F

ORDER BY SUM(interval_wait_s) OVER(PARTITION BY wait_type) DESC,

wait_type, start_time;

GO

-- Prepare view for pivot table

IF OBJECT_ID('dbo.VIntervalWaits') IS NOT NULL

DROP VIEW dbo.VIntervalWaits;

GO

CREATE VIEW dbo.VIntervalWaits

AS

SELECT wait_type, start_time, interval_wait_s

FROM dbo.fn_interval_waits('20060212', '20060215') AS F;

GO

--利用excel创建透视图分析

二联系等待和队列

--1 利用性能计数器监控cpu利用率,I/O队列,缓存命中率,内存计数器等。

--2 为服务器维护的每个性能计数器返回一行

SELECT

object_name,

counter_name,

instance_name,

cntr_value,

cntr_type

FROM sys.dm_os_performance_counters;

三确定方案

--根据以上分析掌握的信息,确定下一步方案

四细化到数据库/文件级别

--分析IO信息

WITH DBIO AS

(

SELECT

DB_NAME(IVFS.database_id) AS db,

CASE WHEN MF.type = 1 THEN 'log' ELSE 'data' END AS file_type,

SUM(IVFS.num_of_bytes_read + IVFS.num_of_bytes_written) AS io,

SUM(IVFS.io_stall) AS io_stall

FROM sys.dm_io_virtual_file_stats(NULL, NULL) AS IVFS

JOIN sys.master_files AS MF

ON IVFS.database_id = MF.database_id

AND IVFS.file_id = MF.file_id

GROUP BY DB_NAME(IVFS.database_id), MF.type

)

SELECT db, file_type,

CAST(1. * io / (1024 * 1024) AS DECIMAL(12, 2)) AS io_mb,

CAST(io_stall / 1000. AS DECIMAL(12, 2)) AS io_stall_s,

CAST(100. * io_stall / SUM(io_stall) OVER()

AS DECIMAL(10, 2)) AS io_stall_pct,

ROW_NUMBER() OVER(ORDER BY io_stall DESC) AS rn

FROM DBIO

ORDER BY io_stall DESC;

五细化到进程级别

--1 注意事项:不要用SQL Server Profiler图形化跟踪;不要把跟踪数据写到数据库表;

不要把跟踪文件写到包含数据库文件的磁盘上;选择事件类和数据列,只跟踪需要的信息,

移除所有默认项和非必选项;列用筛选条件,如数据库ID;

--2 需要跟踪的事件类和字段

SP:Completed

SP:StmtCompleted

RPC:Completed

SQL:StmtCompleted

TextData  Duration host application login

--3 用于创建跟踪的系统存储过程

--创建跟踪定义。新的跟踪将处于停止状态。

sp_trace_create

--创建用户定义事件

sp_trace_generateevent

--在跟踪中添加或删除事件或事件列。

sp_trace_setevent

--将筛选应用于跟踪。

sp_trace_setfilter

--修改指定跟踪的当前状态

--0 停止指定的跟踪。

--1 启动指定的跟踪。

--2 关闭指定的跟踪并从服务器中删除其定义。

sp_trace_setstatus

--以表格格式返回一或多个跟踪文件的内容

SELECT * INTO temp_trc

FROM fn_trace_gettable('c:/temp/my_trace.trc', default);

转载于:https://www.cnblogs.com/dbasys/archive/2008/11/03/2127564.html

sql server 2005 优化方法相关推荐

  1. 如何卸载mysql server 2005_如何卸载SQL Server 2005

    卸载SQL Server 2005的方法之一,放在这儿只是为了记住: 1:把SQL Server2005的安装盘(安装文件)放入到光驱. 2:打开如下路径:开始/运行,输入:cmd 3:输入下列命令: ...

  2. 在网上看到和篇关于sql server 2005的性能优化篇,觉得写得很好。

    在网上看到和篇关于sql server 2005的性能优化篇,觉得写得很好. SQL Server2005扩展函数已经不是一件什么新鲜的事了,但是我看网上的大部分都是说聚合函数,例子也比较浅,那么这里 ...

  3. 数据库开发基本操作-安装Sql Server 2005出现“性能监视器计数器要求”错误解决方法...

    今天在安装SQL Server 2005时,出现"性能监视器计数器要求"错误,因为以前出现过这种错误,得到了解决.今天又又出现这种错误,但并不是很清楚当时的解决办法,所以这次把解决 ...

  4. SQL Server 2005 连接本地端口1433开启远程连接/登陆18456错误的解决方法

    SQL Server 2005 连接本地端口1433开启远程连接/登陆18456错误的解决方法 出处:http://jimmyli.blog.51cto.com/我站在巨人肩膀上Jimmy Li 作者 ...

  5. 优化SQL Server数据库查询方法

    本文详细介绍了优化SQL Server数据库查询方法. SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) ...

  6. SQL Server 2005“备份集中的数据库备份与现有的数据库不同”解决方法此信息转载自BlueSky's Blog,www.heuupk.com,为尊重无价的知识请保留此版权信息。...

    SQL Server 2005"备份集中的数据库备份与现有的数据库不同"解决方法 以前一直使用SQL Server2000,现在使用SQL Server2005,就在现在的项目中使 ...

  7. SQL Server 2005 Compact Edition 程序设计与性能优化

    这是马宁在MEDC 2007上讲授的EAA 402课程,是我收获最多的一节课.马老师已经提供了该课程的PPT和Sample Code给大家下载! 本次课程讲述SQL Server 2005 Mobil ...

  8. sql server 2005 sa登录失败解决方法

    这个每次装好mssql都会遇到, 可是网上不太容易找到解决的办法, 最近弄了几台这样的电脑, 发现其实也就只改几个地方就可以解决, 现在把方法拿出来, 试过不行的再找找别的吧 sa无法登录的话 1.先 ...

  9. 安装SQL Server 2005时,出现“SQL Server 服务无法启动。……”提示的解决方法

    安装SQL Server 2005时,出现"SQL Server 服务无法启动.--"提示的解决方法 上午在自己XP SP3电脑上安装SQL Server 2005时出现如下提示: ...

最新文章

  1. Nginx实现反向代理例子
  2. phpcmsV9 公告内容(图片不显示问题)
  3. 【Codeforces 851D Arpa and a list of numbers】
  4. 算法直观与对模型的理解
  5. 时空幻境-patch
  6. CAD 绘图如何有效的控制精度?
  7. H5微信分享、自定义微信分享
  8. 两阶段最小二乘法TSLS案例分析
  9. Linux编程起步 GCC基本用法
  10. Result的类型分析和总结
  11. windows gvim下载dejavu sans mono字体并更换
  12. 东南亚lazada平台分跨境店和本土店两种,二者的区别都写在这里了
  13. python一些运维模块熟悉
  14. 磁簧开关/干簧管传感器原理
  15. java微信支付v3系列——8.微信支付之退款成功回调
  16. 常见加密算法的Python实现
  17. linux开启mysql窗口_通过window(Navicat)访问linux中的mysql数据库
  18. Discuz!论坛运营之如何开启发帖回帖@会员功能
  19. NBU对Oracle备份及恢复手册
  20. RF连接Mysql数据库

热门文章

  1. 一行命令同时修改maven项目中多个mudule的版本号
  2. 关于小型长周期项目的一些建议
  3. Spring Boot Starters启动器
  4. 【Python】青少年蓝桥杯_每日一题_5.09_画三角形和六边形
  5. mongodb 重启_mongodb历险记
  6. html语言填充没有只有描边,HTML5 Canvas笔记——交互绘制文本(描边、填充、阴影、渐变填充、图案填充、文本的属性设置)...
  7. 西门子fifo_查缺补漏必备 |三菱西门子学员知识问答汇总(技成周报134期)
  8. 数据中心的PUE 最低可至1.15,浸没式液冷技术是关键
  9. 数据中心或许会成为未来5G最强大的技术支撑
  10. 一体化机柜在县级支行机房标准化建设中的应用