------------------------最耗时的sql---------------------------------------
DECLARE @n INT;
SET @n = 500; WITH cte1
AS ( SELECT a.* ,
t.*
FROM sys.dm_exec_query_stats a
CROSS APPLY sys.dm_exec_sql_text(a.plan_handle) t
WHERE t.dbid >= 5
)
SELECT t.dbid ,
DB_NAME(t.dbid) AS dbname ,
a.total_worker_time ,
a.avg_time_ms ,
a.execution_count ,
a.cache_count ,
REPLACE(REPLACE(t.text, CHAR(10), ' '), CHAR(13), ' ')
FROM ( SELECT TOP ( @n )
plan_handle ,
SUM(total_worker_time) / 1000 AS total_worker_time ,
SUM(execution_count) AS execution_count ,
COUNT(1) AS cache_count ,
( SUM(total_worker_time) / SUM(execution_count) )
/ 1000 AS avg_time_ms
FROM cte1
GROUP BY plan_handle
ORDER BY avg_time_ms DESC
) a
CROSS APPLY sys.dm_exec_sql_text(a.plan_handle) t
WHERE avg_time_ms > 200
ORDER BY avg_time_ms DESC; GO ------------------------最频繁的sql---------------------------------------
DECLARE @n INT;
SET @n = 500;
WITH cte1
AS ( SELECT a.* ,
t.*
FROM sys.dm_exec_query_stats a
CROSS APPLY sys.dm_exec_sql_text(a.plan_handle) t
WHERE t.dbid >= 5
)
SELECT t.dbid ,
DB_NAME(t.dbid) AS dbname ,
a.execution_count ,
a.total_worker_time ,
a.avg_time_ms ,
a.cache_count ,
REPLACE(REPLACE(t.text, CHAR(10), ' '), CHAR(13), ' ')
FROM ( SELECT TOP ( @n )
plan_handle ,
SUM(total_worker_time) / 1000 AS total_worker_time ,
SUM(execution_count) AS execution_count ,
COUNT(1) AS cache_count ,
( SUM(total_worker_time) / SUM(execution_count) )
/ 1000 AS avg_time_ms
FROM cte1
GROUP BY plan_handle
ORDER BY avg_time_ms DESC
) a
CROSS APPLY sys.dm_exec_sql_text(a.plan_handle) t
ORDER BY execution_count DESC;
GO ------------------------耗cpu的sql---------------------------------------
DECLARE @n INT;
SET @n = 500;
WITH cte1
AS ( SELECT a.* ,
t.*
FROM sys.dm_exec_query_stats a
CROSS APPLY sys.dm_exec_sql_text(a.plan_handle) t
WHERE t.dbid >= 5
)
SELECT t.dbid ,
DB_NAME(t.dbid) AS dbname ,
a.total_logical_reads ,
a.avg_reads ,
a.total_logical_writes ,
a.avg_writes ,
a.execution_count ,
a.total_worker_time ,
a.avg_time_ms ,
a.cache_count ,
REPLACE(REPLACE(t.text, CHAR(10), ' '), CHAR(13), ' ')
FROM ( SELECT TOP ( @n )
plan_handle ,
SUM(total_logical_reads) AS total_logical_reads ,
( SUM(total_logical_reads) / SUM(execution_count) ) AS avg_reads ,
SUM(total_logical_writes) AS total_logical_writes ,
( SUM(total_logical_writes) / SUM(execution_count) ) AS avg_writes ,
SUM(execution_count) AS execution_count ,
COUNT(1) AS cache_count ,
SUM(total_worker_time) AS total_worker_time ,
( SUM(total_worker_time) / SUM(execution_count) )
/ 1000 AS avg_time_ms
FROM cte1
GROUP BY plan_handle
ORDER BY ( ( SUM(total_logical_reads) / SUM(execution_count) )
+ ( SUM(total_logical_writes) / SUM(execution_count) ) ) DESC
) a
CROSS APPLY sys.dm_exec_sql_text(a.plan_handle) t
ORDER BY ( avg_reads + avg_writes ) DESC;
GO -----------------------当前数据库可能缺少的索引-------------------------------
SELECT d.* ,
s.avg_total_user_cost ,
s.avg_user_impact ,
s.last_user_seek ,
s.unique_compiles
FROM sys.dm_db_missing_index_group_stats s ,
sys.dm_db_missing_index_groups g ,
sys.dm_db_missing_index_details d
WHERE s.group_handle = g.index_group_handle
AND d.index_handle = g.index_handle
ORDER BY s.avg_user_impact DESC; -----------------------当前数据库没用到的索引-------------------------------
SELECT tb_name = OBJECT_NAME(a.object_id) ,
idx_name = b.name ,
last_user_update ,
c.colid ,
c.keyno ,
col_name = d.name
INTO #tmp
FROM sys.dm_db_index_usage_stats a
LEFT JOIN sys.indexes b ON a.object_id = b.object_id
AND a.index_id = b.index_id
LEFT JOIN sys.sysindexkeys c ON c.id = a.object_id
AND c.indid = a.index_id
LEFT JOIN syscolumns d ON d.id = c.id
AND d.colid = c.colid
WHERE database_id = DB_ID()
AND last_user_seek IS NULL
AND last_user_scan IS NULL
AND last_user_lookup IS NULL
AND last_user_update IS NOT NULL
ORDER BY tb_name ,
idx_name ,
keyno;
SELECT tb_name ,
idx_name ,
last_user_update ,
keywords = STUFF(( SELECT ',' + col_name
FROM #tmp
WHERE tb_name = a.tb_name
AND idx_name = a.idx_name
ORDER BY tb_name ,
idx_name ,
keyno
FOR
XML PATH('')
), 1, 1, '')
FROM #tmp a
GROUP BY tb_name ,
idx_name ,
last_user_update;
DROP TABLE #tmp;
GO ------------------------------当前数据库索引的使用率--------------
SELECT OBJECT_NAME(object_id) AS table_name ,
( SELECT name
FROM sys.indexes
WHERE object_id = stats.object_id
AND index_id = stats.index_id
) AS index_name ,
*
FROM sys.dm_db_index_usage_stats AS stats
WHERE database_id = DB_ID()
ORDER BY table_name; --当前数据库指定表的索引使用情况
DECLARE @table AS NVARCHAR(100);
SET @table = 't_ire_candidate'; SELECT ( SELECT name
FROM sys.indexes
WHERE object_id = stats.object_id
AND index_id = stats.index_id
) AS index_name ,
*
FROM sys.dm_db_index_usage_stats AS stats
WHERE object_id = OBJECT_ID(@table)
ORDER BY user_seeks ,
user_scans ,
user_lookups ASC;
GO -- 查找阻塞,通过 a.blocking_session_id 查看引起阻塞的进程,text是对应的sql脚本
SELECT b.text , -- sql执行计划
b.dbid ,
DB_NAME(b.dbid) AS dbname ,
a.session_id , -- 执行会话id
a.blocking_session_id , -- 引起阻塞的会话id
a.status ,
a.command ,
a.wait_time ,
a.wait_type ,
a.wait_resource ,
a.total_elapsed_time
FROM sys.dm_exec_requests a
CROSS APPLY sys.dm_exec_sql_text(a.sql_handle) b
WHERE session_id IN ( SELECT DISTINCT
request_session_id
FROM sys.dm_tran_locks );

摘录http://www.cnblogs.com/chengxiaohui/articles/6377569.html

sqlserver常用调优脚本的更多相关文章

  1. sqlserver常用调优脚本(转)

    (转)以备不时之需 最耗时的sql declare @n int set @n=500 ; with cte1 as(select a.*,t.*from sys.dm_exec_query_stat ...

  2. JVM常用调优工具介绍

    前言 王子在之前的JVM文章中已经大体上把一些原理性问题说清楚了,今天主要是介绍一些实际进行JVM调优工作的工具和命令,不会深入讲解,因为网上资料很多,篇幅可能不长,但都是实用的内容,小伙伴们有不清楚 ...

  3. sqlserver性能调优第一步

    相信不少的朋友,无论是做开发.架构的,还是DBA等,都经常听说“调优”这个词.说起“调优”,可能会让很多技术人员心头激情澎湃,也可能会让很多人感觉苦恼,不知道如何入手.当然,也有很多人对此不屑一顾,因 ...

  4. JVM的常用的调优策略和垃圾回收算法及Tomcat的常用调优参数

    jvm调优主要针对堆内存,堆内存分为:新生区.养老区和永久区 永久区存放的是系统jdk自身的interface和class的元数据,所以唯有新生区和养老区具有优化空间. 新生区:伊甸区和幸存者区.所有 ...

  5. Mysql 常用调优命令总结

    在工作中,经常会碰到Mysql性能问题,本文记录了调优时会用到的一些命令: 1. show full processlist\G: 显示Mysql服务器正在执行的线程.有root权限的用户可以显示所有 ...

  6. Linux内存子系统及常用调优参数

    1>内存子系统 1>组件: slab    allocator buddy    system kswapd pdflush 2>虚拟化环境: PA:进程地址: HA:虚拟机地址: ...

  7. SQLServer性能调优3之索引(Index)的维护

    前言 前一篇的文章介绍了通过建立索引来提高数据库的查询性能,这其实只是个开始.后续如果缺少适当的维护,你先前建立的索引甚至会成为拖累,成为数据库性能的下降的帮凶. 查找碎片 消除碎片可能是索引维护最常 ...

  8. Linux常用调优配置

    cenos 6.5 文件句柄和网络端口 修改系统所有进程可用句柄数,vi /etc/sysctl.conf fs.file-max=655360net.ipv4.ip_local_port_range ...

  9. SQLSERVER性能调优小技巧

    平时做个记录,在工作过程中针对大数据查询的一些小技巧 -----------SELECT------------- 1.必要的冗余字段,减少关联查询 2.关键查询字段必须加索引 否则百万级以上你就别想 ...

随机推荐

  1. 【Ubuntu】Ubuntu网络配置DNS失效问题处理

    安装了Ubuntu Server版本,配置了静态IP地址,并配置了DNS.但重启之后,发现连接外网时候,还是存在问题. 找了一下,是DNS的问题. 可以这样处理: lifeccp@ubuntu:~/w ...

  2. 微信小程序 - 下拉刷新(非组件)

    详情见示例:refresh

  3. 使用Spring框架入门二:基于注解+XML配置的IOC/DI的使用

    一.简述 本文主要讲使用注解+xml配合使用的几种使用方式.基础课程请看前一节. 二.步骤 1.为Pom.xml中引入依赖:本例中使用的是spring-context包,引入此包时系统会自动导入它的依 ...

  4. Struts2添加了<s:debug>后页面无效果的解决方案

    一.环境 Struts2版本 struts2.5 二.问题 在jsp页面中添加了<s:debug>后页面上无任何展示. 三.解决 在struts.xml中的struts节点下添加如下常量即 ...

  5. XWindow、Server、Client和QT、GTK之间的关系

    X WINDOW X Window从逻辑上分为三层:X Server.X Client和X协议.最底层的X Server(X服务器)主要处理输入/输出信息并维护相关资源,它接受来自键盘.鼠标的操作并将 ...

  6. Webwork【02】前端OGNL试练

    1.OGNL 出现的意义 在mvc中,数据是在各个层次之间进行流转是一个不争的事实.而这种流转,也就会面临一些困境,这些困境,是由于数据在不同世界中的表现形式不同而造成的: a. 数据在页面上是一个扁 ...

  7. Python学习笔记九:正则表达式

    一:正则表达式的符号与方法 常用符号: .:匹配任何一个字符,换行符除外(所以,多行字符串中的匹配要特殊处理,见下面实例) *:匹配前一个字符0次或多次 +:匹配前一个字符1次或多次 ?:匹配前一个字 ...

  8. Fiddler拦截并修改移动端请求

    bpu url 由于测试电商平台APP,需测试购买,但又限于公司一提到钱,就给种不给力,所以想到使用Fiddler拦截消息,修改一个虚拟商品ID,虚拟商品价格为0.01元,方便以后测试. 1.打开Fi ...

  9. Arduino从DHT11读取温湿度数据并显示在1602LCD

    硬件清单 Arduino NANO1602LCD + PCF8574T模块YL-47 DHT11模块 连线 1. 连接LCD: PCF8574T模块4pin(Gnd, Vcc, SDA i2c数据, ...

  10. Java Web(5) Spring 下使用Junit4 单元测试

    1. 如何在不启动Tomcat服务器的情况下对,Dao这些不依赖使用Servlet API的类来进行单元测试呢? 其实在Spring框架体系中,已经有一套自己的测试代码,其中就是依赖使用Junit来进 ...