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 字段 类型 约束 [默认值 注释] ...
随机推荐
- Android 实用开源控件
图片放大缩小: PinchImageView 体验最好的图片手势控件,不同分辨率无缝切换,可与ViewPager结合使用. GestureViews 带有手势控制的ImageView和FrameLay ...
- Xcode UIView 中的Button 控件的属性和基本用法
//第一种创建UIButton的方法 //initWhitFrame: UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(1 ...
- Android --RatingBar的使用
1.效果图
- 配置安装CocoPods后进行 项目基本配置
配置安装CocoPods后进行 项目基本配置总结 1)终端在文件根目录下输入 $ touch Podfile 创建一个空白的Podfile文件 2)然后在使用编辑器打开Podfile文件进行需要配置的 ...
- QQ 微信 新浪 无法 分享 收集
1.网络请求报错.升级Xcode 7.0发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport Secur ...
- 转MongoDB 使用Skip和limit分页
关于MongoDB 数据分页和排序 limit,skip用户的一些基础语句,介绍MongoDB 数据分页和排序实例方法. 使用Skip和limit可以如下做数据分页: Code: page1 = db ...
- Cento 安装配置FastFDS
unzip -x libfastcommon-master.zip ./make.sh ./make.sh install /usr/include/fastcommon cd FastDFS ./m ...
- GO语言练习:switch基本用法
1.代码 2.运行 1.代码 package main import "fmt" func switch_1(i int){ switch i { : fmt.Println(&q ...
- 使用Fiddler截断更改Request数据
0x01 Fiddler介绍 Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据.(百度百科) 0x ...
- 加盐加密salt
加盐加密是一种对系统登录口令的加密方式,它实现的方式是将每一个口令同一个叫做”盐“(salt)的n位随机数相关联. 加盐加密是一种对系统登录口令的加密方式,它实现的方式是将每一个口令同一个叫做”盐“( ...