在生产环境,经常会遇到一些奇怪的问题,下面是对一些疑难问题的记录,不定时更新
1、代码部署到现场,用户反应某个表数据被误删,要求把数据恢复到上一个版本,数据表有上个版本的数据。问题是现场数据库很慢,连VPN访问现场服务器,查询sql很慢。恢复数据,要有写一些sql逻辑。
难点:访问实际现场库困难
问题解决方案: 现场数据库导出一份到本地,在本地测试恢复好数据,把数据表替换现场库有问题的表。这种方案,使用现场可以停机使用一段时间的情况。
tips: 如果现场数据库,速度快,其实还可以在本地测试好恢复数据脚本,直接执行脚本,就不存在数据同步问题
2、mysql线上数据表才40W数据,关联一张1w条数据的数据表,查询时间居然30分钟?
背景: 现场环境有2张表 SS_ZYXX(id,名称,....) 1w数据,WD_GZPZ(id,zyxx_id,lx,......) 50w数据 SS_ZYXX.id = WD_GZPZ.zyxx_id,WD_GZPZ有索引zyxx_id。现场查询作业列表信息,
信息包括id,名称,lx1数据量,lx2数据量,lx3数据量。 现在这个接口查询了3分钟,页面加载缓慢。
解决方案:
1、线上数据库导出一份到本地,直接关联SS_ZYXX表和WD_GZPZ,不加任何条件,居然花了30分钟。mysql不知道为啥性能这么差,得出结论关联查询做统计,不合适
2、新建一张统计表ZYXX_TJ,在新建SS_ZYXX和WD_GZPZ表的时候,对WD_GZPZ插入的数据做分类统计,统计信息插入ZYXX_TJ表。查统计信息,直接查不统计表,不对明细表WD_GZPZ做关联group by查询