RML-怎样的语句会被归纳为同一类型(Unique Batches)
我们知道使用RML工具分析跟踪数据(.TRC),其中的"Unique Batches",就是一个关于Batch级别的报表,Batch级别的报表针对的是存储过程或是一个TSQL Batch,存储过程或Batch内部的TSQL语句不会单独列在该报表上。很多存储过程调用或TSQL Batch语句总体是一样的,只是带的参数会有不同,ReadTrace会把这些仅是参数不同的存储过程或语句归为一类。
下图是筛选条件CPU>=30ms的跟踪文件,使用RML工具处理后,Top Unique Batches部分语句(这里使用报表语句在查询窗口得出,结果按NormText排序)
可以看到**HISTORY_111_0存储过程没有完全合并到一起,这和存储过程执行所带参数个数及参数顺序有关。
我们把前两条的NormText复制出来,光标移动到语句的末尾:
它们所带的参数个数不同,查证此存储过程定义了很多参数,部分带有默认值。
下面测试下存储过程执行所带参数个数与参数顺序,是否会影响到Unique Batches的分类。首先打开跟踪,用于收集存储过程的执行,在查询窗口运行下面语句:
use TestDB
go
create proc CheckUnique
@parm1 int,
@parm2 int=2,
@parm3 int=3
as
begin
select @parm1,@parm2,@parm3
end
go
--传入一个参数
exec CheckUnique @parm1=1
exec CheckUnique @parm1=11
--传入两个参数
exec CheckUnique @parm1=1,@parm2=2
exec CheckUnique @parm1=1,@parm2=22
--调换参数顺序
exec CheckUnique @parm2=2,@parm1=1
--传入三个参数
exec CheckUnique @parm1=1,@parm2=2,@parm3=3
此时在Profiler客户端看到:
另存为跟踪文件到CheckUnique.trc,使用RML分析:
ReadTrace -I"F:\TroubleShooting\Trace\CheckUnique.trc" -o"F:\TroubleShooting\Trace\output" -S"127.0.0.1,7777" -d"PerfAnalysis_CheckUnique" -E
处理完成后,点击报表上的"Unique Batches",就可以得到一个关于语句级别的报表:
@parm1归为一类,@parm1,@parm2归为一类,@parm2,@parm1归为一类,@parm1,@parm2,@parm3归为一类。可见参数个数和参数顺序都会影响语句的归类。
那如果是普通的查询语句会是怎样呢?
--where条件不同
select * from sys.tables
select * from sys.tables where type='U'
select * from sys.tables where type='P'
select * from sys.tables where type='U' and schema_id=5
select * from sys.tables where type='P' and schema_id=1
select * from sys.tables where schema_id=5 and type='U'
--select字段不同
select name,create_date from sys.tables
select create_date,name from sys.tables
select name,object_id,create_date from sys.tables
Profiler客户端看到:
RML处理结果:
对比原始语句和处理后的语句,很容易知道RML同一类型的归类受以下条件影响:
对于存储过程,与传入参数个数及参数顺序有关
对于普通的SELECT,与返回字段、顺序及WHERE条件的字段、顺序都有关(UPDTAE、DELETE类似)
RML-怎样的语句会被归纳为同一类型(Unique Batches)的更多相关文章
- insert当 sql语句里面有变量 为字符类型的时候 要3个单引号
set @InsertStr='INSERT INTO [dbo].[T_SchoolPercentMonth]([SchoolID],[MonthOfYear],[PercentNum]) VALU ...
- Sql 语句添加字段、修改字段类型、默认值语法
Sql 语句添加字段 ,) not null --修改类型 alter Table bbs ) Sql 语句修改默认值 alter table 表名 drop constraint 约束名字 --删除 ...
- C#中 ACCESS数据库常用操作语句...容易出错的地方(DateTime类型)
这次在C#编程过程中,第一次用到了ACCESS数据库,重点涉及到时间类型,整数类型.是否类型....;遇到了许多困难,就把这些整理了下来,与大家分享. 一.Insert语句的基本格式: INSERT ...
- SQL Server2012使用导入和导出向导时,用sql语句作为数据源,出现数据源类型会变成202或者203
用MS SqlServer2012进行数据导出时,使用的查询语句导出,但是出现了错误: “发现 xx个未知的列类型转换您只能保存此包“ 点击列查看详细错误信息时,可以看到: [源信息]源位置: 192 ...
- Switch语句的条件只能接受什么类型的值
switch语句只能针对基本数据类型使用,这些类型包括int.char.枚举.bool等.对于其他类型,则必须使用if语句. 在一个 switch 中可以有任意数量的 case 语句.每个 case ...
- python操作mysql数据-执行语句返回值直接返回字典类型
fetchall()将结果放在二维数组里面,每一行的结果在元组里面 import pymysql def export(table_name): conn =pymysql.connect(host ...
- SQL语句增加列、修改列类型、修改列、删除列
1.增加列: alter table tableName add columnName varchar(30) 2.修改列类型: alter table tableName alter column ...
- 【网摘】sql 语句修改字段名称以及字段类型
网上摘抄,备份使用: 修改字段名: 下例将表 customers 中的列 contact title 重命名为 title. EXEC sp_rename 'customers.[contact ti ...
- MySQL语句增加字段,修改字段名,修改类型,修改默认值
原文地址:https://blog.csdn.net/kimgoo/article/details/54630257 增加字段:alter table 表名 ADD 字段 类型 约束 [默认值 注释] ...
随机推荐
- 啥时候js单元测试变的重要起来?
作为一个菜鸟,开这个专栏其实不合适,但又突然发现这个比以往任何时候都重要,所以还是写写我的感受 首先,在传统的pc上也有大量的web站点和各种项目都有复杂的js,但是基本不做单元测试,为啥呢?因为传统 ...
- 【BZOJ】2693: jzptab
http://www.lydsy.com/JudgeOnline/problem.php?id=2693 题意:求$\sum_{i=1}^{n} \sum_{j=1}^{m} lcm(i, j)$, ...
- poj 3254 状压dp入门题
1.poj 3254 Corn Fields 状态压缩dp入门题 2.总结:二进制实在巧妙,以前从来没想过可以这样用. 题意:n行m列,1表示肥沃,0表示贫瘠,把牛放在肥沃处,要求所有牛不能相 ...
- hdu 1715 大菲波数 高精度和运算,水
1.hdu 1715 大菲波数 2.链接:http://acm.hdu.edu.cn/showproblem.php?pid=1715 3.总结:水 #include<iostream> ...
- 基于S5PC100裸机程序之SPI(上)
作者:杨老师,华清远见嵌入式学院讲师. SPI作为应用最为广泛的通信总线协议之一,开发人员应当掌握,本章将介绍SPI总线协议的基本理论,以及S5PC100的SPI总线控制器的操作方法. 1. SPI总 ...
- golang github.com/go-sql-driver/mysql 遇到的数据库,设置库设计不合理的解决方法
golang github.com/go-sql-driver/mysql 遇到的数据库,设置库设计不合理的解决方法,查询中报了以下这个错 Scan error on column index 2: ...
- 纪念逝去的岁月——C/C++二分查找
代码 #include <stdio.h> int binarySearch(int iList[], int iNum, int iX, int * pPos) { if(NULL == ...
- 利用Jquery给当前页或者跳转后页面的导航栏添加选中后样式
具体的样式有两种情况,一种是直接给当前页面添加特殊样式,当网页刷新或者跳转到下一页后,样式消失:另一种情况是即使刷新页面后样式仍然有效. 直接上代码: 第一种情况: 在CODE上查看代码片派生到我的代 ...
- spring mvc 拦截器 拦截子目录
项目中碰到这一个问题: 对于/user/loginpage,/user/login这一类的url,放行: 对于/user/{userId}/xxx(xxx不为空)的操作,需要拦截,url-patter ...
- Js分页插件,支持页面跳转
这里先给出API: 你只需要提供一个对象涉及以下几项属性,你来设置属性值,通过jq对象链式调用page()以参数形式来加载这个对象,按照参数要求会自动生成分页功能, 参数中pageEvent是可以让你 ...