任务描述

1.问题描述:

  存储过程执行慢,经常出现在慢SQL里


  View_RB_ProductOverseas_WareHouse_Table_Sync


2.问题分析


问题分析:存储过程里包含1个插入,18+ 表更新操作,业务流程太长导致执行慢,若执行中由一个表被占用,整个剩下的流程需等待,拉长了整个执行周期。

3.解决方案

  建议拆分到程序里执行多个步骤:这样一个SQL事务分解为多个SQL事务执行,避免因一个表等待导致整个执行周期拉长

 1. 分析,将无关连的执行步骤分开分别执行,避免一个表等待导致都执行不下去,提示,有业务关联性的,需考虑事务。

历史记录  
  1. 2022-04-22 12:04:54, 由 陈少军 创建。
  2. 2022-04-22 12:05:31, 由 陈少军 指派给 程伟。
    修改了 预计剩余,旧值为 "0",新值为 "8"。

    3.解决方案

      建议拆分到程序里执行多个步骤:这样一个SQL事务分解为多个SQL事务执行,避免因一个表等待导致整个执行周期拉长

     1. 分析,将无关连的执行步骤分开分别执行,避免一个表等待导致都执行不下去,提示,有业务关联性的,需考虑事务。

  3. 2022-04-26 09:41:58, 由 程伟 编辑。
    修改了 任务描述,区别为:
    003-
    003+
    004- View_RB_ProductOverseas_WareHouse_Table_Sync
    004+ View_RB_ProductOverseas_WareHouse_Table_Sync
    005-
    005+
    006-
    006+ 2.问题分析
    007- 2.问题分析
    007+
    008-
    008+ 问题分析:存储过程里包含1个插入,18+ 表更新操作,业务流程太长导致执行慢,若执行中由一个表被占用,整个剩下的流程需等待,拉长了整个执行周期。
    009- 问题分析:存储过程里包含1个插入,18+ 表更新操作,业务流程太长导致执行慢,若执行中由一个表被占用,整个剩下的流程需等待,拉长了整个执行周期。
    009+ 3.解决方案
    010-
    010+ 建议拆分到程序里执行多个步骤:这样一个SQL事务分解为多个SQL事务执行,避免因一个表等待导致整个执行周期拉长
    011- 3.解决方案
    011+ 1. 分析,将无关连的执行步骤分开分别执行,避免一个表等待导致都执行不下去,提示,有业务关联性的,需考虑事务。
    012- 建议拆分到程序里执行多个步骤:这样一个SQL事务分解为多个SQL事务执行,避免因一个表等待导致整个执行周期拉长
    013- 1. 分析,将无关连的执行步骤分开分别执行,避免一个表等待导致都执行不下去,提示,有业务关联性的,需考虑事务。
    003- <p>
    003+ <p><br /></p>
    004- </p><p class="MsoNormal"> View_RB_ProductOverseas_WareHouse_Table_Sync</p>
    004+ <p class="MsoNormal"> View_RB_ProductOverseas_WareHouse_Table_Sync</p>
    005- <p class="MsoNormal"><br /></p>
    005+ <p class="MsoNormal"><br /></p>
    006-
    006+ <p>2.问题分析</p>
    007- <p>2.问题分析</p>
    007+ <p><br /></p>
    008- <p>
    008+ <p class="MsoNormal">问题分析:存储过程里包含1个插入,18+ 表更新操作,业务流程太长导致执行慢,若执行中由一个表被占用,整个剩下的流程需等待,拉长了整个执行周期。</p>
    009- </p><p class="MsoNormal">问题分析:存储过程里包含1个插入,18+ 表更新操作,业务流程太长导致执行慢,若执行中由一个表被占用,整个剩下的流程需等待,拉长了整个执行周期。</p>
    009+ <p>3.解决方案</p>
    010-
    010+ <p><span> 建议拆分到程序里执行多个步骤:这样一个SQL事务分解为多个SQL事务执行,避免因一个表等待导致整个执行周期拉长</span></p>
    011- <p>3.解决方案</p>
    011+ <p>1. 分析,将无关连的执行步骤分开分别执行,避免一个表等待导致都执行不下去,提示,有业务关联性的,需考虑事务。</p>
    012- <p><span> 建议拆分到程序里执行多个步骤:这样一个SQL事务分解为多个SQL事务执行,避免因一个表等待导致整个执行周期拉长</span></p>
    013- <p>1. 分析,将无关连的执行步骤分开分别执行,避免一个表等待导致都执行不下去,提示,有业务关联性的,需考虑事务。</p>

    该存储过程对应的业务功能是【海外仓智能备货分析】


    代码分析:

    1. 现将库存表的数据按照1:1的维度批量插入表 View_RB_ProductOverseas_WareHouse_Table

    2. 分多次更新表 View_RB_ProductOverseas_WareHouse_Table 的 订单预出数,采购中数,销量排行数,备货天数等等字段

    3. 每次都是更新同一个表 View_RB_ProductOverseas_WareHouse_Table 不同字段


    优化方案:

    1. 弃用存储过程,改成后端代码,采用三段式编程规范

    2. 将 订单预出数,采购中数,销量排行数,备货天数等等字段 ,先单独查询出来放到内存变量里面,然后一次性批量更新到表 View_RB_ProductOverseas_WareHouse_Table,减少同一个表更新的次数

    2. 数据分批处理,每批次处理500条数据,减少每一次更新表的时间


  4. 2022-04-26 09:42:12, 由 程伟 指派给 程伟。
    修改了 预计剩余,旧值为 "8",新值为 "75"。
  5. 2022-04-26 09:42:22, 由 程伟 指派给 鞠智明。
    修改了 指派给,旧值为 "chengwei",新值为 "juzhiming"。
  6. 2022-05-16 09:26:25, 由 鞠智明 启动。
    修改了 实际开始,旧值为 "0000-00-00 00:00:00",新值为 "2022-05-16 09:26:23"。
    修改了 任务状态,旧值为 "wait",新值为 "doing"。
  7. 2022-05-17 11:27:32, 由 鞠智明 完成。
    修改了 总计消耗,旧值为 "0",新值为 "70"。
    修改了 实际完成,旧值为 "",新值为 "2022-05-17 11:18:51"。
    修改了 任务状态,旧值为 "doing",新值为 "done"。
    修改了 预计剩余,旧值为 "75",新值为 "0"。
    修改了 由谁完成,旧值为 "",新值为 "juzhiming"。

    开发报告

    1.海外仓备货页面-执行手动更新数据优化方案

    把存储过程业务逻辑拆分到代码中去处理,数据查询分多步,主表数据插入通过分页每页500条,需要更新的数据查询出来在内存中去组装好 ,最后批量插入数据库

    原来存储过程:EXEC [View_RB_ProductOverseas_WareHouse_Table_Sync] 1

  8. 2022-05-18 10:49:54, 由 鞠智明 关闭。
    修改了 任务状态,旧值为 "done",新值为 "closed"。
    修改了 指派给 ,旧值为 "juzhiming",新值为 "closed"。
    修改了 由谁关闭,旧值为 "",新值为 "juzhiming"。
    修改了 关闭时间,旧值为 "0000-00-00 00:00:00",新值为 "2022-05-18 10:49:54"。
    修改了 关闭原因,旧值为 "",新值为 "done"。
所属迭代 系统管理部 - 系统服务优化
所属模块 /
相关需求 暂无
指派给 Closed 于 2022-05-18 10:49:54
任务类型 后端
任务标签 初始
开发组
任务状态 已关闭
进度 100%
优先级 P2
关键词
抄送给 刘灿 黄金龙 胡晓龙 吴高发
由谁创建 陈少军 于 2022-04-22 12:04:54
由谁完成 鞠智明 于 2022-05-17 11:18:51
由谁取消 暂无
由谁关闭 鞠智明 于 2022-05-18 10:49:54
关闭原因 已完成
最后编辑 鞠智明 于 2022-05-18 10:49:54
团队 最初预计 总计消耗 预计剩余
工时信息
最初预计 0工时
总计消耗 70工时
预计剩余 0工时
预计开始 2022-04-22
实际开始 2022-05-16
截止日期 2022-04-29