使用TUniSQLMonitor监视SQL语句执行的耗时
//代码来自官方论坛
type TUniSqlMonitorEx = class(TUniSqlMonitor)
private
FExecuteDuration: Cardinal;
FFinalEvent: Boolean;
protected
procedure InternalSQLExecute(Obj: TObject; const SQL: string; Params: TDAParams; const Caption: string; BeforeEvent: boolean; var MessageID: Cardinal); override;
public
property ExecuteDuration: Cardinal read FExecuteDuration;
Property IsFinalEvent: Boolean read FFinalEvent;
end; TForm1 = class(TForm)
UniConnection1: TUniConnection;
UniQuery1: TUniQuery;
OracleUniProvider1: TOracleUniProvider;
procedure FormCreate(Sender: TObject);
private
UniSQLMonitor: TUniSqlMonitorEx;
procedure onSQL(Sender: TObject; Text: String; Flag: TDATraceFlag);
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} { TUniSqlMonitorEx } procedure TUniSqlMonitorEx.InternalSQLExecute(Obj: TObject;
const SQL: string; Params: TDAParams; const Caption: string;
BeforeEvent: boolean; var MessageID: Cardinal);
begin
if BeforeEvent then
begin
FFinalEvent := False;
FExecuteDuration := GetTickCount;
end; inherited; if not BeforeEvent then
begin
FFinalEvent := True;
FExecuteDuration := (GetTickCount - FExecuteDuration);
FOnSQLEvent(Obj, SQL, tfQExecute);
end;
end; procedure TForm1.FormCreate(Sender: TObject);
begin
UniSQLMonitor := TUniSqlMonitorEx.Create(Application.Owner);
UniSQLMonitor.OnSQL := Self.onSQL;
UniQuery1.Execute;
end;
procedure TForm1.onSQL(Sender: TObject; Text: String; Flag: TDATraceFlag);
begin
if (Sender is TUniQuery) and (Flag = tfQExecute) then
begin
if UniSQLMonitor.IsFinalEvent then
ShowMessage(FloatToStr(UniSQLMonitor.ExecuteDuration / 100))
else
FCurrentSQL := Text;
end
else if (Flag = tfError) then
ShowMessage(FCurrentSQL + ', Error:' + Text);
end;
使用TUniSQLMonitor监视SQL语句执行的耗时的更多相关文章
- SQL Server查看Sql语句执行的耗时和IO消耗
原文:SQL Server查看Sql语句执行的耗时和IO消耗 在做系统过程中,经常需要针对某些场景进行性能优化,那么如何判定性能优化的效果呢?肯定需要知道优化之前Sql语句的耗时和优化之后Sql语句的 ...
- Oracle sql语句执行顺序
sql语法的分析是从右到左 一.sql语句的执行步骤: 1)词法分析,词法分析阶段是编译过程的第一个阶段.这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构 ...
- Oracle SQL语句执行步骤
转自:http://www.cnblogs.com/quanweiru/archive/2012/11/09/2762345.html Oracle中SQL语句执行过程中,Oracle内部解析原理如下 ...
- 转:Oracle中SQL语句执行过程中
Oracle中SQL语句执行过程中,Oracle内部解析原理如下: 1.当一用户第一次提交一个SQL表达式时,Oracle会将这SQL进行Hard parse,这过程有点像程序编译,检查语法.表名.字 ...
- 【故障公告】再次遭遇SQL语句执行超时引发网站首页访问故障
非常抱歉,昨天 18:40~19:10 再次遭遇上次遇到的 SQL 语句执行超时引发的网站首页访问故障,由此您带来麻烦,请您谅解. 上次故障详见故障公告,上次排查下来以为是 SQL Server 参数 ...
- html5 webDatabase 存储中sql语句执行可嵌套使用
html5 webDatabase 存储中sql语句执行可嵌套使用,代码如下: *); data.transaction(function(tx){ tx.executeSql("creat ...
- mysql优化(三)–explain分析sql语句执行效率
mysql优化(三)–explain分析sql语句执行效率 mushu 发布于 11个月前 (06-04) 分类:Mysql 阅读(651) 评论(0) Explain命令在解决数据库性能上是第一推荐 ...
- 统计sql语句执行效率
--统计sql语句执行效率SELECT (total_elapsed_time / execution_count)/1000 N'平均时间ms' ,total_elapsed_time/1000 N ...
- SQL语句执行顺寻
SQL语句执行的时候是有一定顺序的.理解这个顺序对SQL的使用和学习有很大的帮助. 1.from 先选择一个表,或者说源头,构成一个结果集. 2.where 然后用where对结果集进行筛选.筛选出需 ...
- EXPLAIN PLAN获取SQL语句执行计划
一.获取SQL语句执行计划的方式 1. 使用explain plan 将执行计划加载到表plan_table,然后查询该表来获取预估的执行计划 2. 启用执行计划跟踪功能,即autotrace功能 3 ...
随机推荐
- 痞子衡嵌入式:利用i.MXRT10xx系列内部DCP引擎计算CRC32值时需注意数据对齐
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是利用i.MXRT10xx系列内部DCP引擎计算CRC32值时需注意数据对齐. MCU 开发里常常需要 CRC 校验来检查数据完整性,CR ...
- []JSR 133 (Java Memory Model) FAQ
JSR 133 (Java Memory Model) FAQ Jeremy Manson and Brian Goetz, February 2004 内容列表 究竟什么是内存模型? 其它语言,像C ...
- Linux之密码生成工具pwgen
linux中生成随机字符串,可以使用pwgen 安装) ubuntu: apt-get install pwgen Centos: yum install pwgen 语法及参数) pwgen [ O ...
- 理解Flink之四State
在Flink的官网写着:Stateful Computations over Data Streams. 基于状态计算的数据流. 在流式计算中,希望做一些聚合分析等.那么就需要保存当前日志的状态,以备 ...
- uni-app小程序(抖音)text组件使用踩坑
前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验也挺棒的,公司项目就是主推uni-app. 坑位 最近在开发一 ...
- 鸿蒙UI开发快速入门 —— part03: 组件的生命周期
1. 什么是组件的生命周期 组件的生命周期是我们开发一个组件必须要关注的内容,组件的生命周期,指的是组件的创建.渲染.销毁等过程.因为这个过程就类似于人从出生到离世的过程,从而称为:组件的生命周期. ...
- AD使用插件生成交互式BOM
AD使用插件生成交互式BOM 效果图镇楼: 下面来说一下怎么搞,过程其实也很简单,就加载一个脚本的事儿. 1.下载AD用交互式BOM插件 首先前往GitHub下载这位大佬开发的插件 地址:https: ...
- .NET 7 中的限流
.NET 中的限流 https://devblogs.microsoft.com/dotnet/announcing-rate-limiting-for-dotnet/ 这里我们要宣布的是集成为 .N ...
- 大咖论道|金融AI下一阶段的发展思考
回顾过去十年,人工智能(AI)技术的发展速度让人惊叹,金融行业是现今AI应用最具潜力和最为活跃的领域之一.通过多年渗透,AI不间断从技术驱动迈向场景驱动,已广泛与金融业务深度融合,衍生出众多新业态.新 ...
- 一个.NET开源、易于使用的屏幕录制工具
前言 一款高效.易用的屏幕录制工具能够极大地提升我们的工作效率和用户体验,今天大姚给大家分享一个.NET开源.免费.易于使用的屏幕录制工具:Captura. 工具介绍 Captura是一款基于.NET ...