今天门店突然报应用不能正常使用,访问缓慢,经检查服务器跟数据库的内存和cpu占用
发现,数据库由于部分sql运行缓慢导致了挤占了过多的服务器资源
看了下,都是前两天已经离职的同事留下的,经检查 卡在两个计数的sql上面
sql内使用了wxopenid<>'' and from_unixtime(addtime,''%Y-%m-%d') >='2019-11-01' and
userid not in (1,2,3,4) and type in (1,2) and branchid = 137 group by userid,appid
后续做了调整如下
branchid = 137 and addtime >=1578926568 and wxopenid>'' and
type in (1,2) and not in (1,2,3,4) group by userid,appid
鉴于表的数据达到了400w 直接使用group by 耗时过多,且当前单个部门每月的数据远
达不到10w,暂且去掉group by 改成limit 100000 大多数部门单月也就几千
调整后为
branchid = 137 and addtime >=1578926568 and wxopenid>'' and
type in (1,2) and not in (1,2,3,4) limit 100000
使用php的函数去重
sql运行速度由原来的的6s缩减为0.28s
暂未想到其他剩下的优化的方法 ,其他待定