sql 获取批处理信息的脚本(优化器在处理批处理时所发生的优化器事件)
--获取批处理信息的脚本(优化器在处理批处理时所发生的优化器事件)
SET NOCOUNT ON;
DBCC FREEPROCCACHE;
--清空过程缓存
GO
--使用tempdb..Optstats表来捕获执行几次
IF ( OBJECT_ID('dbo.tempdb..Optstats') IS NOT NULL )
DROP TABLE tempdb..Optstats;
GO
--创建临时表tempdb..Optstats
SELECT 0 Run ,
*
INTO tempdb..Optstats
FROM sys.dm_exec_query_optimizer_info;
GO
--该语句的计划将被保存到过程缓存
--这样下一次执行时不会产生任何优化器事件
--后面的Go用于确保下次执行这段脚本时可以重用Insert计划
GO
INSERT INTO tempdb..Optstats
SELECT 2 Run ,
*
FROM sys.dm_exec_query_optimizer_info;
GO
--清空临时列表
TRUNCATE TABLE tempdb..Optstats;
GO
--存储运行前的信息
GO
INSERT INTO tempdb..Optstats
SELECT 1 Run ,
*
FROM sys.dm_exec_query_optimizer_info;
GO
--执行批处理语句
SELECT C.CustomerID ,
COUNT(O.OrderID) NumOrders
FROM dbo.Customers C
LEFT JOIN dbo.Orders O ON O.CustomerID = C.CustomerID
WHERE C.City = 'London'
GROUP BY C.CustomerID
HAVING COUNT(O.OrderID) > 5
ORDER BY NumOrders;
GO
--保存到临时表
INSERT INTO tempdb..Optstats
SELECT 2 Run ,
*
FROM sys.dm_exec_query_optimizer_info;
GO
/*从临时表中取出Run1和Run2之间Occurrence或Value值发生改变的所有事件
然后显示执行批处理或查询之前(Run1Occurrence和Run1Value)和之后所有这些事件(Run2Occurrence和Run2Value)的Occurrence和Value*/
WITH X ( Run, Counter, Occurrence, Value )
AS ( SELECT *
FROM tempdb..Optstats
WHERE Run = 1
),
Y ( Run, Counter, Occurrence, Value )
AS ( SELECT *
FROM tempdb..Optstats
WHERE Run = 2
)
SELECT X.Counter ,
Y.Occurrence - X.Occurrence Occurrence ,
CASE Y.Occurrence - X.Occurrence
WHEN 0 THEN Y.Value * Y.Occurrence - X.Value * X.Occurrence
ELSE ( Y.Value * Y.Occurrence - X.Value * X.Occurrence )
/ ( Y.Occurrence - X.Occurrence )
END Value
FROM X
JOIN Y ON X.Counter = Y.Counter
AND ( X.Occurrence <> Y.Occurrence
OR X.Value <> Y.Value
);
GO
--删除临时表
DROP TABLE tempdb..Optstats;
GO
sql 获取批处理信息的脚本(优化器在处理批处理时所发生的优化器事件)的更多相关文章
- 将SQL获取的信息传递到Email中
将SQL获取的信息传递到Email中 最近在为公司财务开发一个邮件通知时遇到了一个技术问题.原来我设计SSIS的是每天将ERP系统支付数据导出到财务支付平台后 Email 通知财务,然后财务到支付平台 ...
- SSIS 实例——将SQL获取的信息传递到Email中
最近在为公司财务开发一个邮件通知时遇到了一个技术问题.原来我设计SSIS的是每天将ERP系统支付数据导出到财务支付平台后 Email 通知财务,然后财务到支付平台上进行支付操作.由于那个时候开发时间很 ...
- linux下获取服务器硬件信息的脚本
这是个简单的脚本,便于查询服务器的硬件信息: #!/bin/bash # # Description: # Used to get the hardware config information. # ...
- SQL Server 监控统计阻塞脚本信息
数据库产生阻塞(Blocking)的本质原因 :SQL语句连续持有锁的时间过长 ,数目过多, 粒度过大.阻塞是事务隔离带来的副作用,它是不可避免的,而且是一个数据库系统常见的现象. 但是阻塞的 ...
- 使用ttXactAdmin、ttSQLCmdCacheInfo、ttSQLCmdQueryPlan获取SQL相关具体信息[TimesTen运维]
使用ttXactAdmin.ttSQLCmdCacheInfo.ttSQLCmdQueryPlan获取SQL相关具体信息,适合于tt11以上版本号. $ ttversion TimesTen Rele ...
- SQL Server 获取服务器信息
最近做了一个小工具,里面涉及到一些取SQL Server 服务器信息的一些东西,找了好久,找到一个不错的,贴出来分享. 系统函数 SERVERPROPERTY ( propertyname ) 包含要 ...
- C# 脚本代码自动登录淘宝获取用户信息
C# 脚本代码自动登录淘宝获取用户信息 最近遇到的一个需求是如何让程序自动登录淘宝, 获取用户名称等信息. 其实这个利用SS (SpiderStudio的简称) 实现起来非常简单. 十数行代码就可 ...
- 通过kfed自动获取磁盘信息的小脚本
通过kfed自动获取磁盘信息的小脚本 编译KFED [oracle@rac lib]$cd $ORACLE_HOME/rdbms/lib [oracle@rac lib]$ pwd /u01/app/ ...
- linux通过脚本获取内存信息
1 原理 脚本中通过执行free获取内存信息,然后将文本信息通过“空格”分隔符分割成字符串数组将不同信息提取出来,最后通过bc计算出百分比 2 脚本 #!/bin/shHOSTNAME=`hostna ...
随机推荐
- SQL面试题之行转列
典型的课程表: mysql> select * from course; +----+------------+----------+------------+ | id | teacher_i ...
- POJ 2601
#include<iostream> #include<iomanip> #include<stdio.h> using namespace std; int ma ...
- POJ 2498
#include<iostream> using namespace std; #include<string> #include<stdio.h> int mai ...
- android自定义控件 几种方式总结
方式1:不继承任何组件 , 直接在代码里面调用实例化.public class ProgressDialog { private Dialog dialog; public ProgressDialo ...
- SqlServer 查看被锁的表和解除被锁的表
查看被锁的表 1 2 select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName ...
- VisualVM + BTrace
VisualVM下载地址:http://visualvm.github.io/download.html 解压后打开bin目录下的visualvm.exe 选择Tool-->Plugins,选择 ...
- Android 开发工具类 33_开机自运行
原理:该类派生自 BroadcastReceiver,重载方法 onReceive ,检测接收到的 Intent 是否符合 BOOT_COMPLETED,如果符合,则启动用户Activity. imp ...
- sql server 2008 R2
SQL SERVER 2008 R2序列号: 数据中心版:PTTFM-X467G-P7RH2-3Q6CG-4DMYB 开 发者 版:MC46H-JQR3C-2JRHY-XYRKY-QWPVM 企 ...
- TCP/IP 笔记 - 概述
Effective communication depends on the use of a common language. 有效沟通取决于使用共同的语言 . TCP/IP协议族 一系列相关协议的 ...
- 编译开源C或者C++项目最好像执行如下命令,否则可能会有这种奇葩问题
find ./ -type f | xargs sed -i 's/\r$//' find ./ -name "*.sh" | xargs chmod +x find ./ -ty ...