总台业务软件卡顿分析报告模版Word下载.docx

上传人:b****3 文档编号:15759432 上传时间:2022-11-15 格式:DOCX 页数:8 大小:259.20KB
下载 相关 举报
总台业务软件卡顿分析报告模版Word下载.docx_第1页
第1页 / 共8页
总台业务软件卡顿分析报告模版Word下载.docx_第2页
第2页 / 共8页
总台业务软件卡顿分析报告模版Word下载.docx_第3页
第3页 / 共8页
总台业务软件卡顿分析报告模版Word下载.docx_第4页
第4页 / 共8页
总台业务软件卡顿分析报告模版Word下载.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

总台业务软件卡顿分析报告模版Word下载.docx

《总台业务软件卡顿分析报告模版Word下载.docx》由会员分享,可在线阅读,更多相关《总台业务软件卡顿分析报告模版Word下载.docx(8页珍藏版)》请在冰豆网上搜索。

总台业务软件卡顿分析报告模版Word下载.docx

'

)ASValsFROMdbo.HerSettingWHERE(Enabled=1)AND(SettingNode=P1)

N'

P1varchar(200)'

'

App.User.Code'

//节点名根据参数变化

2、原因分析

1)代码调用

functionTFormBizSet.GetFunctionValFromHerSetting(SettingNode:

string):

string;

var

astr:

begin

astr:

=FormOptions.getADOConnectionByActivePage.ConnectionString;

StandardDaemon_Init(PCHAR(astr));

//问题所在

Result:

=StandardDaemon_GetFunctionSettingVal(PCHAR(SettingNode));

end;

2)根源在DLL中

执行一次StandardDaemon_GetFunctionSettingVal函数,会产生10次查表语句,其中5次是可以省去,4次是可以优化处理。

3)分析:

aqPeis.SQL.Add('

AND(SettingNode=:

SettingNode)'

);

执行后会产生SQL语句,如下所示:

SETFMTONLYON

selectSettingNodefromdbo.HerSettingWHERE1=2

SETFMTONLYOFF

3、调试方法

1)打开SQLProfiler

2)新建跟踪并设置过滤条件并且跟踪结果,如下所示

1>

选择“事件选择”页签

2>

选中“显示所有列”并单击“列筛选器”按钮

3>

过滤掉冰激凌监控

4>

只监控PEIS数据库

5>

确定后,运行跟踪

6>

在源码中打上断点

7>

运行程序,到断点后观察profiler监控,此时只有2条,程序单步调试后,再观察,如下图所示,会出现大量重复的语句调用。

8>

整个程序完全启动后,以上重复语句会达到30条之多。

改进建议

1)建议程序只加载一次表查询功能,剩下的过滤等操作可以用filter及filtered属性过滤,这样便可以减少多次访问数据表的操作且可以大大提高执行效率。

2)将adoquery.sql.add用字符串连接替换。

aqPeis.SQL.Add('

语句可以使用字符串连接来避免多出来的一句SQL查询语句

s:

='

SELECTSettingName,'

+aVal+'

ASVals'

+

'

FROMdbo.HerSetting'

WHERE(Enabled=1)'

AND(SettingNode='

+'

+astr+'

)'

;

aqPeis.SQL.Text:

=s;

3)StandardDaemon_GetHerSetting_Inner多次调用同一个表的解决办法

修改函数:

思路:

利用全局表处理

优点:

只加载一次,效率提高

缺点:

实时性差,修改配置后,需要重启软件才能得到结果

总结:

适用于配置后不常变化的数据集加载

implementation

usesUFunction;

//Addedby建2017-1-1115:

06:

47

g_HerSettingTable:

TADOTable;

-----------------------------------------------------------------------------------------------------

FunctionStandardDaemon_GetHerSetting_Inner(SettingNode:

SettingField:

string):

Variant;

i:

integer;

astr,bstr,aVal:

string;

//Modifiedby建2017-1-1115:

08:

12

//利用临时表优化

=SettingNode;

bstr:

='

try

ifnotStandardDaemon_CheckNil('

aqPeis'

aqPeis)thenexit;

withg_HerSettingTabledo

begin

//空记录集时,则查表并克隆记录集

ifEofandbofthen

ifaqPeis.Activethen

aqPeis.Close;

aqPeis.SQL.Clear;

//查找所有变量字段,连接字段字符串

aVal:

COALESCE(ValString,'

)asValString'

+'

COALESCE(ValEncoded,'

)asValEncoded'

COALESCE(SettingType,'

)asSettingType'

COALESCE(ValInteger,0)asValInteger'

COALESCE(ValBool,0)asValBool'

COALESCE(ValDateTime,0)asValDateTime'

COALESCE(ValMoney,0)asValMoney'

//Modifiedby建2017-1-1014:

32:

45

//优化,减少一条SQL查表语句

s:

SELECTSettingName,SettingNode,'

+aVal+

+

aqPeis.SQL.Text:

=s;

aqPeis.Open;

//克隆表

Clone(aqPeis);

end;

filter:

SettingNode='

+'

+astr+'

;

filtered:

=true;

ifRecordCount>

0then

result:

=FieldByName(SettingField).Value;

end

else

result:

=Null;

except

OnE:

ExceptionDobegin

//'

StandardDaemon_GetHerSetting_Inner错误:

+E.Message;

ifVarIsNull(result)thenbegin

ifSameText(SettingField,'

ValString'

)thenresult:

elseifSameText(SettingField,'

ValEncoded'

SettingType'

ValInteger'

=0

ValBool'

=false

ValDateTime'

=EncodeDate(2001,1,1)

ValMoney'

=0.0;

initialization

CoInitialize(nil);

//ADO需要,USES:

Ole2

This_ID_Depart:

=0;

This_DoLogging:

=true;

07:

17

//建立临时表

g_HerSettingTable:

=TADOTable.Create(nil);

finalization

37

FreeAndNil(g_HerSettingTable);

CoUnInitialize();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1