SQLServer常用运维SQL整理(转)
转载地址:https://www.cnblogs.com/tianqing/p/11152799.html
今天线上SQLServer数据库的CPU被打爆了,紧急情况下,分析了数据库阻塞、连接分布、最耗CPU的TOP10 SQL、查询SQL并行度配置、查询SQL 重编译的原因等等
整理了一些常用的SQL
1. 查询数据库阻塞
1
|
SELECT * FROM sys.sysprocesses WHERE blocked<>0 |
查询结果中,重点看Blocked这一列,先找出最多的SID,然后循环找出Root的阻塞根源SID
查询阻塞根源Session的SQL
1
|
DBCC Inputbuffer(sid) |
2. 查询SQL连接分布
1
|
SELECT Hostname FROM sys.sysprocesses WHERE hostname<> '' |
1,查看连接到‘TestDB2’数据库的连接
select * from master.dbo.sysprocesses
where dbid = DB_ID('TestDB2')
*查询某个数据库用户的连接情况
sp_who 'sa'
2,查看数据库允许的最大连接
select @@MAX_CONNECTIONS
3,查看数据库自上次启动以来的连接次数
SELECT @@CONNECTIONS
4,关闭连接
上面的查询可以得到spid,根据spid,关闭进程就可以了。
kill 54
3. 查询最消耗CPU的SQL Top10
1
2
3
|
select top (10) st.text as Query, qs.total_worker_time, qs.execution_count from sys.dm_exec_query_stats as qs CROSS Apply sys.dm_exec_sql_text(qs.sql_handle) AS st order by qs.total_worker_time desc |
4. 查看SQLServer并行度
1
|
SELECT value_in_use FROM sys.configurations WHERE name = 'max degree of parallelism' |
并行度如果设置为1,To suppress parallel plan generation, set max degree of parallelism to 1
将阻止并行编译生成SQL执行计划,最大并行度设置为1
1
2
3
4
5
6
7
8
9
10
|
USE DatabaseName ; GO EXEC sp_configure 'show advanced options' , 1; GO RECONFIGURE WITH OVERRIDE; GO EXEC sp_configure 'max degree of parallelism' , 16; GO RECONFIGURE WITH OVERRIDE; GO |
5. 查询SQL Server Recompilation Reasons
1
2
|
select dxmv. name , dxmv.map_key,dxmv.map_value from sys.dm_xe_map_values as dxmv where dxmv. name = 'statement_recompile_cause' order by dxmv.map_key |
6. 将SQL Trace文件存入一张表,做聚合分析(CPU、IO、执行时间等)
1
2
3
|
SELECT * INTO TabSQL FROM fn_trace_gettable( 'C:\Users\***\Desktop\Trace\sql05trace20180606-业务.trc' , default ); GO |
对上述表数据进行聚合分析最耗时的SQL
1
2
3
4
5
6
7
8
9
10
11
12
|
select top 100 replace ( replace ( replace ( substring (Textdata,1,6600) , char (10), ' ' ), char (13), ' ' ) , char (9), ' ' ) as '名称' , --substring(Textdata,1,6600) as old, count (*) as '数量' , sum (duration/1000) as '总执行时间ms' , avg (duration/1000) as '平均执行时间ms' , avg (cpu) as '平均CPU时间ms' , avg (reads) as '平均读次数' , avg (writes) as '平均写次数' , LoginName from TabSQL t group by replace ( replace ( replace ( substring (Textdata,1,6600) , char (10), ' ' ), char (13), ' ' ) , char (9), ' ' ) , LoginName order by sum (duration) desc |
最耗IO的SQL
1
2
3
4
5
6
7
8
9
10
11
12
|
select TOP 100 replace ( replace ( replace ( substring (Textdata,1,6600) , char (10), ' ' ), char (13), ' ' ) , char (9), ' ' ) as '名称' ,LoginName, count (*) as '数量' , sum (duration/1000) as '总执行时间ms' , avg (duration/1000) as '平均执行时间ms' , sum (cpu) as '总CPU时间ms' , avg (cpu) as '平均CPU时间ms' , sum (reads) as '总读次数' , avg (reads) as '平均读次数' , avg (writes) as '平均写次数' from TabSQL group by replace ( replace ( replace ( substring (Textdata,1,6600) , char (10), ' ' ), char (13), ' ' ) , char (9), ' ' ) ,LoginName order by sum (reads) desc |
最耗CPU的SQL
1
2
3
4
5
6
7
8
9
10
11
|
SELECT TOP 100 replace ( replace ( replace ( substring (Textdata,1,6600) , char (10), ' ' ), char (13), ' ' ) , char (9), ' ' ) as '名称' ,LoginName, count (*) as '数量' , sum (duration/1000) as '总执行时间ms' , avg (duration/1000) as '平均执行时间ms' , sum (cpu) as '总CPU时间' , avg (cpu) as '平均CPU时间' , avg (reads) as '平均读次数' , avg (writes) as '平均写次数' from TabSQL group by replace ( replace ( replace ( substring (Textdata,1,6600) , char (10), ' ' ), char (13), ' ' ) , char (9), ' ' ) ,LoginName order by avg (cpu) desc |
SQLServer常用运维SQL整理(转)的更多相关文章
- SQLServer常用运维SQL整理
今天线上SQLServer数据库的CPU被打爆了,紧急情况下,分析了数据库阻塞.连接分布.最耗CPU的TOP10 SQL.查询SQL并行度配置.查询SQL 重编译的原因等等 整理了一些常用的SQL 1 ...
- sqlserver常用运维sql
1. sqlserver 检测sql SELECT top 10 (total_elapsed_time / execution_count)/1000 N'平均时间ms' ,total_elapse ...
- Liunx常用运维命令整理记录
前言 作为后端开发者,掌握一些常用的运维命令也是很有必要的,本文记录常用Liunx运维命令 基本命令 目录切换 cd base-admin/ 切换到当前目录下的base-admin目录 cd .. 切 ...
- Oracle 常用运维命令整理
点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 一.oracle建库与删库命令 (1)oracle11g ...
- linux系列之常用运维命令整理笔录
目录 本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍 ...
- oracle常用运维sql语句
1.查询dblink语句 col owner for a20col db_link for a30col username for a20col host for a30set linesize 12 ...
- postgres常用运维sql
1.查看数据库大小 select pg_database_size('log_analysis'); postgres=# select pg_database_size('postExpress') ...
- DB2常用运维命令
DB2是IBM公司推出关系型数据库管理系统.主要应用于银行.医院等大型机构.现今DB2主要包含以下三个系列:DB2 for Linux, UNIX and Windows(LUW) . DB2在Lin ...
- linux基本语法和常用运维命令
linux上的操作一般是命令行操作,看起来很高大上,让人畏而远之. Help!Help! 忽然间闯入的linux黑黑的世界,怎么办,不要慌.赶紧敲出一个help命令,然后回车,黑色的窗口就会展示一些常 ...
随机推荐
- 互斥锁的robust属性的介绍和使用
一个具体的场景:在多线程中,当一个线程获得锁之后异常退出后,应该怎么处理? 方案一 使用锁的robust特性 简单地讲,就是当拥有这个锁的线程挂了后,下一个尝试去获得锁的线程会得到EOWNWERDEA ...
- ELK快速入门(五)配置nginx代理kibana
ELK快速入门五-配置nginx代理kibana 由于kibana界面默认没有安全认证界面,为了保证安全,通过nginx进行代理并设置访问认证. 配置kibana [root@linux-elk1 ~ ...
- 什么是OSI参考模型?
一.OSI参考模型 1.OSI的来源 OSI(Open System Interconnect),即开放式系统互联. 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模 ...
- Object类.时间日期类.System类.Stringbuilder类.包装类
Object类 java.lang.Object类是java语言中的根类,即所有类的父类.它中描述的所有方法都可以使用.在对象实例化的时候,最终找的父类就是Object. 如果一个类没有特别指定父类, ...
- 品优购项目 单表过程 乒乓过程 入口 MyBatis逆向工程 dubbo框架搭建 品牌表CRUD bug集锦
- 关键字explicit的作用(转)
C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况 ...
- es6 Object 数据属性和访问器属性
原文 :http://www.jb51.net/article/91698.htm 总结 ES5提供了Object.getOwnPropertyDescripter()方法来获取给定属性的描述符. p ...
- spring是什么?
spring是什么? 1.编程范式的实践 dsl.注解.aop技术,扩展java语言的表达能力: dsl:xml配置+注解配置,扩展工程的组织能力: 2.基础组件: 常用组件的便捷封装,方便进行二次开 ...
- swift的柯里化demo
func baseFunc(go:String, goo:String) -> String { return "hello" + go + goo; } func Curr ...
- 2019 CSP-J复赛游记
不出行?不出行考屁呢? 今天的CSP-J似乎比去年简单了一些,可它... 好了,来说一说我的情况. T1:太水,5分钟秒 T2:这个数据有点尴尬,双重循环铁定爆,用链表有有一点小题大做.本蒟蒻在考场上 ...