成长篇之代码灵异事件

1. 最近遇到许多代码灵异事件,几乎都是本地运行没有问题,一到线上测试就出问题,或是本来没问题,用着用着突然有问题了,新换工作的小九一脸懵逼,开始怀疑人生。

2.对于这种问题,首先一定不要怀疑人生,相信科学。首先排除是否是操作不当引起的问题,如输入框一次输入过多(之前同事一次输入500条数据出了问题),分两次操作就可以了;其次要排除是否是缓存的问题,所以要多清除几遍页面浏览器或app缓存。再其次如果不是缓存的问题,那就要思考为啥不一样,有啥不一样,这时就可以想到数据库,既然代码一样,出了问题就只能是数据库数据的问题了。

3.数据库的问题可能分多钟:其一,可能数据表某一列的值是唯一的,而测试时不小心或不注意的时候将其改成有重复的了;其二,可能数据表中插入了(null)等不合法的数据,导致查出是失败;对于这些问题,我们要debug自己本地没有问题的代码,检查功能逻辑,排查相关数据业务。肉眼直观看不到就讲测试数据库相关表考下来吧,只能重现问题了,能重现的问题都不叫问题,哈哈,,

4.代码没有灵异事件,对于初学者一定要冷静下来,莫慌。以后遇到问题还会更新的。解决完问题是真的爽呐

 


 

更新ing:20190712

又遇到了,摸索出一半,留下一半以后再研究吧

故事是我们的一个后台的某个页面打开特别慢,注(本地没问题,客户使用也没问题,就测试服务器上有问题)。由于本地没问题,所以考虑是否是数据的原因,于是跟踪代码将最终的查询语句拷出来,将涉及的三张表从测试服务器的数据库中拷入本地,本以为可以问题重现,结果惊呆宝宝了,本地还是没问题!对的,没问题,一样的数据一样的数据处理,本地很快一秒就可以打开页面,而测试服务器上要30秒!

接下来,小九把数据查询语句搬到测试服务器上去运行,发现是查询的问题,语句查询就要二三十秒,也就三张表30个字段,然后慢慢减少查询字段运行,发现随着查询字段的减少查询时间下降了,这结果蒙蔽了我,让我以为是服务器不行,因为我们测试服是一核的(公司有点小抠,哈哈),然后小九就以为问题解决了

第二天被另一个大佬问话,他让我解决测试服进入慢的问题,我将上面的研究成果告诉他,大佬明确说才30个字段,肯定可以优化的,而且客户以后如果遇到了这个问题,他不会管你是什么原因只会在意能不能用。于是被训一通后,小九又开始研究这该死的问题,不过这次大佬提供了测试数据库给我,终于可以在自己电脑上连接测试库了(感动),这次果然有了新的发现。我发现三张表里有一张表只查询一列,而且查询速度慢好像就是这一列引起的,将该列注释掉查询速度瞬间从15秒变为1秒,问题算是快要找到了吧。

接下来就围着这列反复修改测试,将左外连接查询条件等号左右互换一下,发现有一个测试服务器的查询好了,连续查了几次都是一秒,后台测试也说网页变快了,然后把查询条件左右改回来,速度还是1秒!!所以这应该是莫名其妙的就好了,但是还有一台测试服务器查询还是很慢15秒。然后经过一系列的乱改数据表及数据,好了坏了好了坏了几次后,发现我还是太嫩了,这问题还是以后再出现再研究吧估计原因由以下两点可以找到。

不过本次问题学到两点:

1.EXPLAIN 关键字可以让我们看到mysql如何使用索引来处理select语句以及连接表    

2.索引失效的情况(参照博客 mySQL语句优化 )

 


 

20190713 通过上面的explain 发现是索引失效引起的查询速度慢,于是通过强制使用索引 :force index(强制要走的那个索引)  终于解决了问题。不过关于为什么之前有时索引有用有时没用这个问题还得考量,不过问题解决了就好啦。。

 

转载于:https://www.cnblogs.com/dztHome/p/11125086.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值