This website requires JavaScript.

MSSQL 读书笔记 查询性能分析(一)

SQL Server Estended Events, SQL Trace ,SQL Server Profiler

任何监控系统对系统都有一些性能影响,如果你的系统已经有性能问题。那么你可能让它变得更慢。 这意味着你必须用一个轻量级的监控系统。SQL Server Extended Events 是一个非常轻量级的性能监视系统。 注意:  SQL Trace 已不推荐使用,或许下个版本就会被取消。 SQL Server Profiler 是SQL Trance的UI版。SQL Server Profiler 有以下缺点:

  • 当你使用SQL Server Profiler的时候对系统性能的影响要比SQL Trance跟多
  • 当你使用SQL Server Profiler的时候你监控的实例所占的资源,SQL Server Profiler也要占一份
  • 当你远程使用SQL Server Profiler的死后所有事件都会通过网络传输。会降低网络其他操作
  • SQL Server Profiler 以grid显示数据。会消耗大量内存。
  • 你或者你的小伙伴要监控很长一段时间的时候。很容易不经意的关掉Profiler并停止跟踪         因为以上的缺点,在正式服务器上追踪的时候最好用SQL Tranc。当然SQL  Server Profiler以后也可能会取消。

实际操作:使用Extended Events

一、 准备T-SQL语句并建立Extended Events 会话

1. 使用以下语句进行执行查询测试。

SELECT  C.custid , C.companyname , O.orderid , O.orderdate FROM    Sales.Customers AS C INNER JOIN Sales.Orders AS O ON C.custid = O.custid ORDER BY C.custid , O.orderid;
2.展开Extended Events,右击选择New Session Wizard。

image

定义一个Session 名字 BIHELL

image

选择不用模板

image

在Event library里面找到 sql_statement_completed

image

接下来的Capture Global Fields (Actions),因为你在前一步所选的Event会自动为我们激活相关的Action,所以这里我们什么都不选。 Global Fields也成为Acton,即对事件的响应。他们被绑定到事件。Action 可以捕捉堆栈存储、检验数据,把信息存储到一个本地变量,聚合/或增补事件数据。距离来说你可以使用execution plan detection action 来检测执行计划。

image

在Set Session  Event Filters页面中我们要设置过滤条件:

sqlserver.database_name = TSQL2012 sqlserver.sql_text 使用like_i_sql_unicode_string 操作符来模糊匹配我们的SQL语句 SELECT C.custid, C.companyname%  显示如下:

image

Specify Session Data Storage 中选择Work With Only The Most Recent Data (Ring_Buffer Target) ,然后点击下一步

image

在Summary 页面,点击Finish。

在最后一页选择 Start the event session immediately after session creation 和 watch the live data on the screen as it is captured ,然后点击Close

image

二、使用建立好的Extended Events Session

新建一个查询,然后执行我们的查询语句,再切到监控界面,我们可以看到监控结果

image

关掉Live Data 窗口,右击我们创建的 Extended Events,可以创建DDL语句。

image

样本数据库

0条评论
avatar