MSSQL 读书笔记 查询性能分析(一)
SqlServer
2015-07-11
831
0
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。
定义一个Session 名字 BIHELL
选择不用模板
在Event library里面找到 sql_statement_completed
接下来的Capture Global Fields (Actions),因为你在前一步所选的Event会自动为我们激活相关的Action,所以这里我们什么都不选。 Global Fields也成为Acton,即对事件的响应。他们被绑定到事件。Action 可以捕捉堆栈存储、检验数据,把信息存储到一个本地变量,聚合/或增补事件数据。距离来说你可以使用execution plan detection action 来检测执行计划。
在Set Session Event Filters页面中我们要设置过滤条件:
sqlserver.database_name = TSQL2012 sqlserver.sql_text 使用like_i_sql_unicode_string 操作符来模糊匹配我们的SQL语句 SELECT C.custid, C.companyname% 显示如下:
Specify Session Data Storage 中选择Work With Only The Most Recent Data (Ring_Buffer Target) ,然后点击下一步
在Summary 页面,点击Finish。
在最后一页选择 Start the event session immediately after session creation 和 watch the live data on the screen as it is captured ,然后点击Close
二、使用建立好的Extended Events Session
新建一个查询,然后执行我们的查询语句,再切到监控界面,我们可以看到监控结果
关掉Live Data 窗口,右击我们创建的 Extended Events,可以创建DDL语句。