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 fromsys.dm_exec_query_stats as qs CROSS Apply sys.dm_exec_sql_text(qs.sql_handle) AS storder 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 fromsys.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 TabSQLFROM 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 '平均写次数', LoginNamefrom TabSQL tgroup by replace(replace(replace( substring(Textdata,1,6600) ,char(10),' '),char(13),' ') ,char(9),' ') , LoginNameorder 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 TabSQLgroup by replace(replace(replace( substring(Textdata,1,6600) ,char(10),' '),char(13),' ') ,char(9),' ') ,LoginNameorder 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 TabSQLgroup by replace(replace(replace( substring(Textdata,1,6600) ,char(10),' '),char(13),' ') ,char(9),' ') ,LoginNameorder 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命令,然后回车,黑色的窗口就会展示一些常 ...
随机推荐
- mysql查询语句中使用星号真的慢的要死?
前言 之所以写这篇文章,是源于以前看过的关于sql语句优化的帖子,里面明确提到了在sql语句中不要使用 * 来做查询,就像下面的规则中说的 2.尽量避免使用select *,返回无用的字段会降低查询效 ...
- YUV和RGB格式单像素所占内存大小分析
图片的大小定 义为:w * h,宽高分别为w和h 一.YUV格式 1.1.YUV420格式存储方式:先Y,后V,中间是U.其中的Y是w * h,U和V是w/2 * (h/2)举例:如果w = 4,h ...
- C#各版本新增功能
本系列文章主要整理并介绍 C# 各版本的新增功能. C# 8.0 C#8.0 于 2019年4月 随 .NET Framework 4.8 与 Visual Studio 2019 一同发布,但是当前 ...
- js动画---一个小bug的处理
对于前面的课程,大家似乎看不出来存在什么问题,一切都很顺利,但是其实是存在一个很大的bug的,这个bug是什么呢?? 我们来看看下面这个程序就知道了 <!DOCTYPE html> < ...
- OSX Homebrew 安装 Spring Boot CLI
OSX Homebrew 安装 Spring Boot CLI 如果您使用的是Mac并使用Homebrew,则可以使用以下命令安装Spring Boot CLI: $ brew tap pivotal ...
- SSM之JSON通用返回格式
/** * 通用的返回的类 * */ public class Result { //状态码 100-成功 200-失败 private int code; //提示信息 private String ...
- 怎么避免写bug?
1:关注可能的业务逻辑异常:业务逻辑异常 可以通过各种输入输出 和 预期进行比较 即可很快发现. 2:关注可能的运行逻辑异常: 如 copy对象: 对象引用等 这类异常只看代码逻辑时很难发现的:代码写 ...
- 我对ISO 七层模型的理解
应用层: 负责native格式的请求配置,请求发起.关闭等功能: 负责应用数据请求可直接调用的api的支持. 使用表示层和会话层包装而成的便捷工具(API):Alamofire 表示层: 将应用层配置 ...
- python-随机生成验证码实例
需求:随机生成验证码, 思路: 1.生成一个随机数,65-90 2.数字转化为字母:chr(数字) #!/usr/bin/env python # -*- coding:utf-8 -*- impor ...
- 用插件maven-surefire-report-plugin生成html格式测试报告
在默认情况下,执行maven test/maven package/maven install命令时会在target/surefire-reports目录下生成txt和xml格式的输出信息. 其实ma ...