大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说springboot使用shardingsphere分库分表跳页引发的MySQL报警[亲测有效],希望您对编程的造诣更进一步.
背景:
公司内部的一个系统实现的时候用了分表,方案是开源的ShardingSphere 分表算法使用了100取模,100张表嗯嗯数据量太大,对于历史数据还使用了定时任务迁移。这些架构设计会在另一篇文章详谈。
故障:
某日,数据库告警,cup报警,发现多条慢查询日志(部分查询高达8分钟…),进而导致业务受到影响
以下是阿里云洞察详情
从日志中看到多条慢日志的offset超级大,导致很多无用查询,这里还导致返回记录特别多,
but,怎么导致这个结果的??
原因:
没有手动执行过这种sql,也没有接口提供这种入口。
从查询的时间点筛选请求日志发现请求是通过一个分页触发的,比如下面这个分页,现在点击最后一页3332,(页面是按照时间正序排列的,看最后一页可以看最新的数据)
当筛选条件中添加指定多个应用时,我们会在多个表里查找…然后…分页,记得之前看文档说shardingsphere分页的时候会分页修正,见下图
So,这时候选择多个表,并选择尾页查询,shardding就会把每张表里符合条件的数据査出来,合并排序拿到最终数据。这就算MySQL受得了,服务器也受不了啊
解决方案:
了解原因后解决方案也出来了,如果想看最后的页,那就倒过来看开始的页就可以了:添加排序按钮,并让前端只显示前几页来隐藏入口,接口也禁止使用太大的页数查询
页面实现效果:
至此,使用分库分表插件shardingsphere分页查询尾页最后几页导致的mysql数据库服务器报警的问题解决了。
springboot使用shardingsphere分库分表跳页引发的MySQL报警
原文:https://www.cnblogs.com/timseng/p/12713142.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8861.html