




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
总台业务软件卡顿分析报告修改时间修改人修改内容版本备注2017年1月12日赵建新建V0.1草稿问题一:启动时多次重复查表1、 现象1)抓图2)启动时执行30遍(SQL profiler监控结果)SET FMTONLY ON select SettingNode from dbo.HerSetting WHERE 1=2 SET FMTONLY OFFexec sp_executesql N SELECT SettingName, COALESCE(ValString, ) AS Vals FROM dbo.HerSetting WHERE (Enabled=1) AND (SettingNode=P1),NP1 varchar(200),App.User.Code /节点名根据参数变化2、 原因分析1)代码调用function TFormBizSet.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语句,如下所示:SET FMTONLY ON select SettingNode from dbo.HerSetting WHERE 1=2 SET FMTONLY OFF3、 调试方法1) 打开SQL Profiler2)新建跟踪并设置过滤条件并且跟踪结果,如下所示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:= SELECT SettingName, + aVal + AS Vals+ FROM dbo.HerSetting+ WHERE (Enabled=1)+ AND (SettingNode=+astr+); aqPeis.SQL.Text:=s;3)StandardDaemon_GetHerSetting_Inner多次调用同一个表的解决办法修改函数:思路:利用全局表处理优点:只加载一次,效率提高缺点:实时性差,修改配置后,需要重启软件才能得到结果总结:适用于配置后不常变化的数据集加载implementationuses UFunction;var / Added by 赵建 2017-1-11 15:06:47 g_HerSettingTable:TADOTable;-Function StandardDaemon_GetHerSetting_Inner(SettingNode: string; SettingField: string) : Variant;var i : integer; astr, bstr, aVal: string; s:string;begin / Modified by 赵建 2017-1-11 15:08:12 /利用临时表优化 astr := SettingNode; bstr := ; try if not StandardDaemon_CheckNil(aqPeis, aqPeis) then exit; with g_HerSettingTable do begin /空记录集时,则查表并克隆记录集 if Eof and bof then begin if aqPeis.Active then aqPeis.Close; aqPeis.SQL.Clear; /查找所有变量字段,连接字段字符串 aVal:= COALESCE(ValString, ) as ValString +,+ COALESCE(ValEncoded, ) as ValEncoded +,+ COALESCE(SettingType, ) as SettingType +,+ COALESCE(ValInteger, 0) as ValInteger +,+ COALESCE(ValBool, 0) as ValBool +,+ COALESCE(ValDateTime, 0) as ValDateTime +,+ COALESCE(ValMoney, 0) as ValMoney; / Modified by 赵建 2017-1-10 14:32:45 /优化,减少一条SQL查表语句 s := SELECT SettingName,SettingNode, + aVal + FROM dbo.HerSetting + WHERE (Enabled=1); aqPeis.SQL.Text := s; aqPeis.Open; /克隆表 Clone(aqPeis); end;filter:= SettingNode=+ + astr + ; filtered:=true; if RecordCount 0 then begin result := FieldByName(SettingField).Value; end else begin result := Null; end; end; except On E: Exception Do begin result := Null; / StandardDaemon_GetHerSetting_Inner 错误: + E.Message; end; end; if VarIsNull(result) then begin if SameText(SettingField, ValString) then result := else if SameText(SettingField, ValEncoded) then result := else if SameText(SettingField, SettingType) then result := else if SameText(SettingField, ValInteger) then result := 0 else if SameText(SettingField, ValBool) then result := false else if SameText(SettingField, ValDateTime) then result := EncodeDate(2001, 1, 1) else if SameText(SettingField, ValMoney) then result := 0.0; end;end;-initialization CoInitialize(nil); / ADO 需要, USES: Ole2 This_ID_Depart := 0; This_DoLogging := true; / Added by 赵建 2017-1-11 15:07:1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工作职责与团队合作的关系
- 2025年红酒包装印刷行业研究报告及未来发展趋势预测
- 2025年呼吸系统疾病中药行业研究报告及未来发展趋势预测
- 2025年烘焙食品原料行业研究报告及未来发展趋势预测
- 2025会计硕士题库试题附答案详解(夺分金卷)
- 2025年互联网+礼品行业研究报告及未来发展趋势预测
- 污水处理设备安装施工技术创新报告
- 2025年合成水滑石行业研究报告及未来发展趋势预测
- 2025年即时通讯行业研究报告及未来发展趋势预测
- 文化传媒公司项目管理模板
- 加快建设教育强国-2025年上半年形势与政策
- 一例急性胰腺炎患者的个案护理课件
- 2024四川省水电投资经营集团有限公司员工公开招聘1人笔试参考题库附带答案详解
- 中考古文整合复习主题五治国类
- 2023陆上风电场工程退役拆除技术导则
- 新教材人教版高中英语选择性必修第四册全册各单元重点语法
- 数字货币法律挑战-全面剖析
- 体育赛事组织及管理的业务流程
- 深信服aES产品技术白皮书-V1.5
- 2024春形势与政策-铸牢中华民族共同体意识课件
- 婴幼儿回应性照护的基本策略课件
评论
0/150
提交评论