[步骤]
[结果]
主库压力较大,优化sql,[期望]
[步骤]
[结果]
主库压力较大,优化sql,[期望]
问题原因:sql执行并发,数据库主库压力较大
涉及范围:埋词服务
优化方案:之前sql 是埋词范围查询 top 500条,根据listing id 生序查询,生序查询耗性能,改成 区间查询,
1:不需要listing id 生序,改成区间查询,
2:首先查询出,改策略该站点该来源渠道,符合埋词范围最大的listing id,缓存redis ,15个小时
3:判断区间的开始值是否大于等于第二步查询出来的id,如果大于等于,(修改当前来源渠道缓存在redis 的数据)跳出循环,下一个来源渠道
4:区间开始结束值计算
5:当查询没有数据时,在查询一遍,该来源渠道符合条件的最小id,重置区间开始值
6:埋词范围分页,500一页
7:埋词来源也是如上操作
| 由谁创建 | 王地福 于 2023-02-06 11:41:40 |
|---|---|
| 影响环境 |
测试环境-测试反馈 |
| 由谁解决 | 王地福 于 2023-02-07 11:43:05 |
| 解决版本 | |
| 解决方案 | 系统设计缺陷 |
| 由谁关闭 | 程宽 于 2023-02-08 11:03:53 |
| 最后修改 | 程宽 于 2023-02-08 11:03:53 |
| 相关Bug |
|---|
SELECT
TOP 500
a.SKU,
a.OrderSourceID,
a.OrderSourceSKUID,
a.OrderSourceSKU,
a.OrderSourceName,
a.OrderSourceCountry,
a.ASINorItemID,
a.DevIDSellerId,
a.IsFBA,
a.BusinessUserName,
a.AddAdminName,
a.BrowsePathByID
FROM
RB_Amazon_Product_Base a ( nolock )
INNER JOIN RB_Product e ( nolock ) ON e.CustomerID= a.CustomerID
AND e.sku = a.sku
AND e.ProductProperty<> 2
INNER JOIN RB_OrderSource c ( nolock ) ON a.CustomerID= c.CustomerID
AND a.OrderSourceID= c.id
AND c.IsActive = 1
INNER JOIN RB_OrderSource_EbayAmazonAPI d ( nolock ) ON d.CustomerID= c.CustomerID
AND d.OrderSourceID= c.ID
AND d.IsActive= 1
WHERE a.CustomerID = 1 AND a.OrderSourceSKUID > 265238747 AND a.IsOffShelf = 0 and a.IsDelete=0 and a.OrderSourceID=6381
AND a.PublishTime < '2022-08-11' AND a.msaleNum >= 0 AND a.msaleNum <= 0 AND a.OrderSourceCountry='JP'
and not exists(select aa.ID from RB_Amazon_Product_Base aa ( NOLOCK ) where aa.OrderSourceCountry = a.OrderSourceCountry
AND aa.ASINorItemID = a.ASINorItemID
AND aa.CustomerID = a.CustomerID
AND aa.IsFBA = 1 )
ORDER BY a.OrderSourceSKUID