【性能优化】应收单列表查询性能卡顿的优化方案原创
金蝶云社区-pishao
pishao
116人赞赏了该文章 559次浏览 未经作者许可,禁止转载编辑于2024年04月04日 11:03:48


一、问题描述:

       应收单列表加载速度较慢,存在卡顿,或者存在列表界面一直在转圈,数据加载不出来等卡慢的现象;


二、优化方案(此方案适用于8.1.0.20230921之前的版本,该版本之后已经对标准产品进行了优化):

       1、请在应收单列表过滤界面点击“确定”前或者点击应收单列表“刷新”按钮前,先打开APM性能监控工具(打开方式:CTRL+SHIFT+ALT+M,四个按钮同时按下即可打开),启用APM后可对即将执行的功能进行监控;

       

       2、如果列表能加载完数据,APM点停止,查看报告才有效,报告中出现如图中的慢语句,并且存在图中标识的三个关键信息(排序字段、应收单相关表、分页),请参照第4点进行优化;

点确定之前.png

点刷新之前.png

       APM截图.png

       慢语句.png

       3、如果列表不能加载完数据,存在一直转圈的现象,则取不到APM报告,可以通过两种方式来判断是否存在该慢SQL:

       (1)、在应收单列表加载过程中,打开数据库,执行以下语句查询当前正在执行的SQL:

        --查询正在执行的语句

        select text,* from sys.dm_exec_requests   er cross apply  sys.dm_exec_sql_text(er.sql_handle)

       (2)、开启APM并且查询列表数据之后等应收单列表加载过一段时间(一般在卡住1~2小时以后),使用管理员账号登录,在菜单中找到“应用性能监控日志”,以此方式也可以找到对应的APM报告(前提是有开启过APM)。


       4、待以上都确认完成,确实因为该语句引起的列表查询性能慢,则可以在数据库创建应收单明细表的索引来进行优化,创建语句如下:

       CREATE INDEX IDX_AR_RECEIVABLEENTRY_FIDSEQ ON t_ar_Receivableentry(fid,fseq) ;


       5、创建完索引,重新查询,即恢复正常。


三、说明:

       1、通常应收单列表查询较慢,是因为该SQL语句的排序问题引起的,如果以上方式仍不能解决应收单列表查询慢,可以通过判断应收单行的数据量是否庞大来判断加载速度,理论上如果数据库中存在百万级,甚至千万级的数据量,并且过滤方案是全量查询,或者多组织查询,是会存在一定性能上的损耗的,如仍存在疑问,可联系官方进行处理;

       2、应付单列表或者其他单据列表的如果出现加载慢,也可能存在同类型的性能问题,如果遇到可以参考此方案(仅参考,具体情况以实际为准)。

赞 116