mysql的坑——持续更新

1.mysql varchar char类型字段默认不去space比较

BUG:通过两个条件写入的数据存在重复的情况。今天测试复现bug时一直无法复现。在发散思考的时候想到是否是数据问题导致。经过实验确实印证了这个思考。感觉向真相迈进了一大步。

如下图:条件是his_id+pat_no,可以很直观的看到查出了3条数据,实际他们并不一致

请大家观察光标位置,在不同的字段中右测都加了不同长度的space,但是sql会认为他们是相同数据查出,如果是selectOne的情况则会 错。

原因呢,mysql官 已经给出解释了

按照方法3做了一次实验,解决了。但。。。。这种数据通过接口跑不进去

BUG还是没有复现,为啥呢。挠头半小时后没办法找研发要了源码,好像是没加同步锁,该接口场景可能存在多线程情况,,,好吧  1w匹羊驼飘过。

并发测试中。。。。

10秒后

果然特么出现了重复大佬,加锁后问题解决。

 

今天发现用“mybatis-generator-maven-plugin”生成的mybatis mapper.xml中都做了很好的trim操作。。。所以提醒大家原生代码中也要加入哦。。。

 

2.mysql索引失效

BUG: 表导出时间长

问题: 表sql条件未使用上索引。

检查步骤:

各条件是否加了索引    是

条件中是否存在计算等内置函数    否

关联表中的字段类型是否不一致   否

查询内容是否大于整体表的30%   是

 

原因:

由于时间有大量重复,导致查询内容大于整体表的30%导致未用索引。

避免索引失效sql需要做到关联条件的索引字段名称一致,类型一致,长度一致,避免使用内置函数,避免使用子查询,避免使用多对多的索引,避免使用不唯一的索引。

https://my.oschina.net/u/3861898/blog/4683322

 

 

 

 

文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树首页概览32934 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年10月4日
下一篇 2020年10月4日

相关推荐