原文:sqlserver 抓取所有执行语句 SQL语句分析 死锁 抓取

在多人开发中最头疼的是人少事多没有时间进行codereview,本来功能都没时间写,哪有时间来开会细细来分析代码.软件能跑就行,但是一些影响性能的语句写出来,有可能本人都不知道.找就更

麻烦了.幸亏sqlserver提供了工具可以导出执行语句进行分析.可以看看是哪些语句影响整体性能.工具叫sql server profiler,这玩意可以抓取实例上执行的所有语句\死锁\事物,为分析提供帮助.

开始->sqlserver目录->性能工具->sql server profiler 打开软件新建连接你想抓的实例,然后你就可以看到这个了

点击显示所有事件,会列出可以监视的所有状态.一般分析和用的多的话死TSQL\Stored ProcedureS\Lock 这三个.第一个很简单是SQL语句,第二个是存储过程,第三个是锁的情况.

一般把前两个放在一起分析.可以找到所有的执行语句.第三个用来单独分析来找死锁.

前两个选好以后,转到第一个选项卡,不要保存在文件,保存在文件给没有一样,直接保存到表,这时,你要另外找个数据库了.因为保存到表中相当于往保存的数据库中插入一条记录,然后这个语句

又会产生一个语句,造成无限递归,一会就把服务器搞死,我们一次分析时,直接把要分析的库跟抓取的库放在同一个实例上,结果3分钟后整个SQL挂了,没有响应了,删了抓取表,重启实例服务,重启网站

才好.还好是处理的快.简单说,比如你要分析服务器上的一个实例所有的语句,你要把抓取的结果放在你本地的数据库实例中

放到数据库表中后,因为是结构化数据,所以分析也特别容易,一下贴一张图.抓取的结果放在表中,是会覆盖原表中的数据.还有它抓取数据中,界面在不断的闪烁.也在列表中增加,如果服务器显卡不佳,一会

就给卡死,所以开启以后直接最小化,抓取完毕直接用任务处理器杀掉进程就行.抓取时间跟你们要分析的片段有关.然后用SQL语句直接查出耗时前10,然后个人认领回去修改就行.我存在本地数据库

名字DataA中的表InitTableInfo,这样我们就可以查询下

use DataA

select top 100 datediff(second, StartTime, EndTime) costtime,
RowNumber,
TextData,
ApplicationName,
ClientProcessID,
SPID
from InitTableInfo
where StartTime is not null
and EndTime is not null
order by costtime desc

以下是结果展示

第一个是花费的时间,还有对应的语句,以及一些额外的信息.可以看到一些用时最大的达到20多秒.很吓人的额.这样贴出来让个人认领去修改.达到提升执行效率的目的.

2.死锁

程序运行中一些关键模块,比如会员积分和金额代金券等,有些人写的因为不够注意或者当时水平不行,容易些一些死锁.这样我们需要有一个分析的路径.

如果再程序中加入try catch来捕获,自己写的熟悉的模块还好,如果是别人写的另外时间紧任务重.你一时发现不了,你就可以启用死锁了

deadlock graph 会把找到的deadlock放到一个xdl文件中,这玩意用文件夹也打的开,可以分别存储每个deadlock发生的语句和占用的资源.这时间你就可以根据这玩意处理了.

一般处理死锁是相同顺序的读写\优化索引和最小限度的使用表里的数据,对于抓取数据,进行使用行级锁和页级锁.对于非必要的数据进行脏读.单独说又是很多了.这里只介绍工具

保存好的死锁文件,可以送给你的各位同事,

sqlserver 抓取所有执行语句 SQL语句分析 死锁 抓取的更多相关文章

  1. tcpdump来抓取执行的sql语句

    # tcpdump -n -nn -tttt -i eth1 -s 65535 'port 3306' -w tcpdump_mysql.ret -C 100 一个TCP包中包含多个mysql协议包, ...

  2. SqlServer 中如何查看某一个Sql语句是复用了执行计划,还是重新生成了执行计划

    我们知道SqlServer的查询优化器会将所执行的Sql语句的执行计划作缓存,如果后续查询可以复用缓存中的执行计划,那么SqlServer就会为后续查询复用执行计划而不是重新生成一个新的执行计划,因为 ...

  3. [转]查询sqlserver 正在执行的sql语句的详细信息

    包含用户名,所在数据库,执行的sql语句,执行开始时间,驱动程序,主机名称 SELECT     [Spid] = session_Id, ecid, [Database] = DB_NAME(sp. ...

  4. 随机取若干条记录的SQL语句

    原文:随机取若干条记录的SQL语句 MySql中随机提取数据库N条记录 select * from TableName order by rand() limit N   SQLServer中随机提取 ...

  5. c# 实现定义一套中间SQL可以跨库执行的SQL语句

    c# 实现定义一套中间SQL可以跨库执行的SQL语句 目前数据的种类非常多,每种数据都支持sql语句,但是大家发现没有每种数据的SQL都有自己的语法特性,都是SQL语句都没有一个特定的语法标准,导致开 ...

  6. mysql怎么终止当前正在执行的sql语句

    mysql怎么终止当前正在执行的sql语句 show processlist; kill 要杀的ID kill 7

  7. MySql使用show processlist查看正在执行的Sql语句

    今天上班例行的查看了下服务器的运行状况,发现服务器特卡,是mysqld这个进程占用CPU到了99%导致的. 比较好奇是那个程序在使用mysql导致cpu这么高的,通过show processlist命 ...

  8. 监控mysql执行的sql语句

    linux平台 监控mysql执行的sql语句   为了做好配合开发做性能和功能测试,方便监控正在执行的sql语句, 可以在/etc/mysqld中添加如下:  log =/usr/local/mys ...

  9. 查询Oracle正在执行的sql语句

    --查询Oracle正在执行的sql语句及执行该语句的用户 SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, spid 操作系统ID, ...

随机推荐

  1. [翻译] UPCardsCarousel

    UPCardsCarousel UPCardsCarousel is a carousel with a cards based UI for iOS. UPCardsCarousel是一个旋转木马效 ...

  2. Gerrit安装配置

    环境: CentOS 1611 + gerrit-2.11.4 (review.openstack.org) 1. 安装java1.8 (>1.7) [root@review ~]# yum i ...

  3. Redis学习---Redis操作之Set

    Set操作,Set集合就是不允许重复的列表 sadd(name,values) name对应的集合中添加元素 --------------------------------------------- ...

  4. 剑指offer 08跳台阶

    一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). java版本: public class Solution { public s ...

  5. Spring MVC Hello World 404

    下面的例子说明了如何使用 Spring MVC 框架来编写一个简单的基于 web 的 Hello World 应用程序.下面让我们使用 Eclipse IDE,然后按照下面的步骤使用 Spring 的 ...

  6. 程序员减少代码BUG的7种方法,拒绝编程5分钟,查代码2小时!

    0.别对警告视而不见 相信不少的程序员会使用IDEA,使用它敲代码,有时候会出现警告,那么这时你对警告就不能视而不见了. 我们的目标是,写干净的代码,做风一样的男子! 1.编程习惯 种瓜得瓜种豆得豆, ...

  7. Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)

    在下面这篇博文里,我给各位博客们,分享了创建HBase表,但这远不止打好基础. HBase编程 API入门系列之create(管理端而言)(8) 在关系型数据库里,表的高表和宽表是不存在的.在如HBa ...

  8. ZT 80-90年代港台300部电视剧 你看过多少?

    80-90年代港台300部电视剧 你看过多少? [复制链接]     噗噗 738主题 18精华 万家金领 发消息   发表于 2010-4-27 09:01:02 |显示全部楼层 1.(珍珠传奇) ...

  9. #001 如何组织JS代码

    如何组织JS代码 有没有这样的经历,在编写代码的时候,因为功能简单,写的时候比较随意,所有的JS代码都放在一个文件里面,但是随着功能的增加,发现代码很乱,不好维护. 简单的整理了一下,目前对已有项目的 ...

  10. 【MSSQL教程】#001 整体思维导图

    整个MSSQL体系的一个思维导图,方便理解整个MSSQL需要学习那些方面的知识.