sql server 2005 优化方法
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 优化方法相关推荐
- 如何卸载mysql server 2005_如何卸载SQL Server 2005
卸载SQL Server 2005的方法之一,放在这儿只是为了记住: 1:把SQL Server2005的安装盘(安装文件)放入到光驱. 2:打开如下路径:开始/运行,输入:cmd 3:输入下列命令: ...
- 在网上看到和篇关于sql server 2005的性能优化篇,觉得写得很好。
在网上看到和篇关于sql server 2005的性能优化篇,觉得写得很好. SQL Server2005扩展函数已经不是一件什么新鲜的事了,但是我看网上的大部分都是说聚合函数,例子也比较浅,那么这里 ...
- 数据库开发基本操作-安装Sql Server 2005出现“性能监视器计数器要求”错误解决方法...
今天在安装SQL Server 2005时,出现"性能监视器计数器要求"错误,因为以前出现过这种错误,得到了解决.今天又又出现这种错误,但并不是很清楚当时的解决办法,所以这次把解决 ...
- SQL Server 2005 连接本地端口1433开启远程连接/登陆18456错误的解决方法
SQL Server 2005 连接本地端口1433开启远程连接/登陆18456错误的解决方法 出处:http://jimmyli.blog.51cto.com/我站在巨人肩膀上Jimmy Li 作者 ...
- 优化SQL Server数据库查询方法
本文详细介绍了优化SQL Server数据库查询方法. SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) ...
- SQL Server 2005“备份集中的数据库备份与现有的数据库不同”解决方法此信息转载自BlueSky's Blog,www.heuupk.com,为尊重无价的知识请保留此版权信息。...
SQL Server 2005"备份集中的数据库备份与现有的数据库不同"解决方法 以前一直使用SQL Server2000,现在使用SQL Server2005,就在现在的项目中使 ...
- SQL Server 2005 Compact Edition 程序设计与性能优化
这是马宁在MEDC 2007上讲授的EAA 402课程,是我收获最多的一节课.马老师已经提供了该课程的PPT和Sample Code给大家下载! 本次课程讲述SQL Server 2005 Mobil ...
- sql server 2005 sa登录失败解决方法
这个每次装好mssql都会遇到, 可是网上不太容易找到解决的办法, 最近弄了几台这样的电脑, 发现其实也就只改几个地方就可以解决, 现在把方法拿出来, 试过不行的再找找别的吧 sa无法登录的话 1.先 ...
- 安装SQL Server 2005时,出现“SQL Server 服务无法启动。……”提示的解决方法
安装SQL Server 2005时,出现"SQL Server 服务无法启动.--"提示的解决方法 上午在自己XP SP3电脑上安装SQL Server 2005时出现如下提示: ...
最新文章
- Nginx实现反向代理例子
- phpcmsV9 公告内容(图片不显示问题)
- 【Codeforces 851D Arpa and a list of numbers】
- 算法直观与对模型的理解
- 时空幻境-patch
- CAD 绘图如何有效的控制精度?
- H5微信分享、自定义微信分享
- 两阶段最小二乘法TSLS案例分析
- Linux编程起步 GCC基本用法
- Result的类型分析和总结
- windows gvim下载dejavu sans mono字体并更换
- 东南亚lazada平台分跨境店和本土店两种,二者的区别都写在这里了
- python一些运维模块熟悉
- 磁簧开关/干簧管传感器原理
- java微信支付v3系列——8.微信支付之退款成功回调
- 常见加密算法的Python实现
- linux开启mysql窗口_通过window(Navicat)访问linux中的mysql数据库
- Discuz!论坛运营之如何开启发帖回帖@会员功能
- NBU对Oracle备份及恢复手册
- RF连接Mysql数据库
热门文章
- 一行命令同时修改maven项目中多个mudule的版本号
- 关于小型长周期项目的一些建议
- Spring Boot Starters启动器
- 【Python】青少年蓝桥杯_每日一题_5.09_画三角形和六边形
- mongodb 重启_mongodb历险记
- html语言填充没有只有描边,HTML5 Canvas笔记——交互绘制文本(描边、填充、阴影、渐变填充、图案填充、文本的属性设置)...
- 西门子fifo_查缺补漏必备 |三菱西门子学员知识问答汇总(技成周报134期)
- 数据中心的PUE 最低可至1.15,浸没式液冷技术是关键
- 数据中心或许会成为未来5G最强大的技术支撑
- 一体化机柜在县级支行机房标准化建设中的应用