总台业务软件卡顿分析报告模版.docx
- 文档编号:2848381
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:8
- 大小:259.20KB
总台业务软件卡顿分析报告模版.docx
《总台业务软件卡顿分析报告模版.docx》由会员分享,可在线阅读,更多相关《总台业务软件卡顿分析报告模版.docx(8页珍藏版)》请在冰豆网上搜索。
总台业务软件卡顿分析报告模版
总台业务软件卡顿分析报告
修改时间
修改人
修改容
版本
备注
2017年1月12日
建
新建
V0.1
草稿
问题一:
启动时多次重复查表
1、现象
1)抓图
2)启动时执行30遍(SQLprofiler监控结果)
SETFMTONLYONselectSettingNodefromdbo.HerSettingWHERE1=2SETFMTONLYOFF
execsp_executesqlN'SELECTSettingName,COALESCE(ValString,'''')ASValsFROMdbo.HerSettingWHERE(Enabled=1)AND(SettingNode=P1)
',N'P1varchar(200)','App.User.Code'//节点名根据参数变化
2、原因分析
1)代码调用
functionTFormBizSet.GetFunctionValFromHerSetting(SettingNode:
string):
string;
var
astr:
string;
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条之多。
4>改进建议
1)建议程序只加载一次表查询功能,剩下的过滤等操作可以用filter及filtered属性过滤,这样便可以减少多次访问数据表的操作且可以大大提高执行效率。
2)将adoquery.sql.add用字符串连接替换。
aqPeis.SQL.Add('AND(SettingNode=:
SettingNode)');语句可以使用字符串连接来避免多出来的一句SQL查询语句
s:
='SELECTSettingName,'+aVal+'ASVals'+
'FROMdbo.HerSetting'+
'WHERE(Enabled=1)'+
'AND(SettingNode='+''''+astr+''''+')';
aqPeis.SQL.Text:
=s;
3)StandardDaemon_GetHerSetting_Inner多次调用同一个表的解决办法
修改函数:
思路:
利用全局表处理
优点:
只加载一次,效率提高
缺点:
实时性差,修改配置后,需要重启软件才能得到结果
总结:
适用于配置后不常变化的数据集加载
implementation
usesUFunction;
var
//Addedby建2017-1-1115:
06:
47
g_HerSettingTable:
TADOTable;
-----------------------------------------------------------------------------------------------------
FunctionStandardDaemon_GetHerSetting_Inner(SettingNode:
string;SettingField:
string):
Variant;
var
i:
integer;
astr,bstr,aVal:
string;
s:
string;
begin
//Modifiedby建2017-1-1115:
08:
12
//利用临时表优化
astr:
=SettingNode;
bstr:
='';
try
ifnotStandardDaemon_CheckNil('aqPeis',aqPeis)thenexit;
withg_HerSettingTabledo
begin
//空记录集时,则查表并克隆记录集
ifEofandbofthen
begin
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+
'FROMdbo.HerSetting'+
'WHERE(Enabled=1)';
aqPeis.SQL.Text:
=s;aqPeis.Open;
//克隆表
Clone(aqPeis);
end;
filter:
='SettingNode='+''''+astr+'''';
filtered:
=true;
ifRecordCount>0then
begin
result:
=FieldByName(SettingField).Value;
end
else
begin
result:
=Null;
end;
end;
except
OnE:
ExceptionDobegin
result:
=Null;//'StandardDaemon_GetHerSetting_Inner错误:
'+E.Message;
end;
end;
ifVarIsNull(result)thenbegin
ifSameText(SettingField,'ValString')thenresult:
=''
elseifSameText(SettingField,'ValEncoded')thenresult:
=''
elseifSameText(SettingField,'SettingType')thenresult:
=''
elseifSameText(SettingField,'ValInteger')thenresult:
=0
elseifSameText(SettingField,'ValBool')thenresult:
=false
elseifSameText(SettingField,'ValDateTime')thenresult:
=EncodeDate(2001,1,1)
elseifSameText(SettingField,'ValMoney')thenresult:
=0.0;
end;
end;
-----------------------------------------------------------------------------------------------------
initialization
CoInitialize(nil);//ADO需要,USES:
Ole2
This_ID_Depart:
=0;
This_DoLogging:
=true;
//Addedby建2017-1-1115:
07:
17
//建立临时表
g_HerSettingTable:
=TADOTable.Create(nil);
finalization
//Addedby建2017-1-1115:
07:
37
FreeAndNil(g_HerSettingTable);
CoUnInitialize();//ADO需要,USES:
Ole2
建
2017年1月12日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 总台 业务 软件 分析 报告 模版