用友股份-LE服务支持部技术方案--《客商合并缓慢问题解决案例》建立日期:2013-04-01修改日期:xxxx-xx-xx文档属性:客户文控编号:LE-DY-JS-2013-00462/5文档控制创建记录审阅人姓名所属部门职位审阅签字发布人姓名所属部门发布时间日期作者所属部门邮件地址版本2013-04-01李楠V1.03目录客商合并缓慢问题解决案例...............................................................................................4一.系统环境..................................................................................................................4二.问题描述................................................................................................................4三.检查分析................................................................................................................4四.解决方法................................................................................................................54客商合并缓慢问题解决案例一.系统环境NC56二.问题描述由于项目需要,进行客商合并的操作。在新帐套进行客商合并的时候每合并一个客商需要10分钟。三.检查分析远程使用NMC分析,看到有类似如下的sql经常出现:updateGL_FIXTMPFREEVALUEsetts='2013-04-0215:03:32',def1=casedef1when'000181100000000EGDTI'then'12308110000000002EI7'elsedef1end,code1=casedef1when'000181100000000EGDTI'then'BH105686'elsecode1end该语句没有where条件,导致该表需要全表扫描大范围的update操作额外开销比较大已经出了补丁NC_FI_GL-NC5.6-Patch-20120731-203988307(v5.6_修改任何一个基础档案保存很慢),其中补丁说明如下:“近日发现归档日志较大,经AWR初步分析可能为附件语句导致updateGL_FIXTMPFREEVALUEsetts='2012-07-1912:03:49',code9=casedef9when'1070A21000000000QVK9'then'OC0527003200'elsecode9end,code14=casedef14when'1070A21000000000QVK9'then'OC0527003200'elsecode14end,5code13=casedef13when'1070A21000000000QVK9'then'OC0527003200'elsecode13end,code7=casedef7when'1070A21000000000QVK9'then'OC0527003200'elsecode7end,code12=casedef12when'1070A21000000000QVK9'then'OC0527003200'elsecode12end,code18=casedef18……”补丁中使用getUpdateSqlNew方法取代老方法,核心方法是用一系列的简单update语句代替原来的单条语句多个when-case结构(减少日志,加快速度)。四.解决方法但是该补丁不能解决客商合并的问题,原因是改补丁中涉及的类nc.bs.gl.accbook.AssFreevalueDMO类似的结构有两套,一个是getCombinSql,一个是getUpdateSql,内容一样,但是出补丁时只改了getUpdateSql未改getCombinSql。