springboot使用shardingsphere分库分表跳页引发的MySQL报警[亲测有效]

springboot使用shardingsphere分库分表跳页引发的MySQL报警[亲测有效] 背景: 公司内部的一个系统实现的时候用了分表,方案是开源的ShardingSphere 分表算法使用了100取模,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

(0)
上一篇 2023-02-20
下一篇 2023-02-20

相关推荐

  • Python Timeit模块使用指南

    Python Timeit模块使用指南在Python中,如果需要测量一段代码的执行时间,通常可以使用time模块,通过记录开始和结束时间,计算两个时间之差得到执行时间。但是,这种方法有以下缺点:一方面,time模块仅仅能够测量代码的全局执行时间,无法知道代码中每个语句执行所花费的时间;另一方面,在实际使用时,由于Python的解释执行方式,相邻代码执行顺序可能会产生微小的差异,导致测试结果不准确。对于这些问题,Python提供了Timeit模块来进行精确的时间测量。下面我们将详细介绍Timeit模块的使用。

    2024-08-07
    32
  • mysql逗号分隔字符串成多行数据[通俗易懂]

    mysql逗号分隔字符串成多行数据[通俗易懂]SELECT 其他字段, SUBSTRING_INDEX( SUBSTRING_INDEX( a.'逗号分隔字段', ',', b.help_topic_id…

    2023-04-04
    142
  • 掌握mysql_直击灵魂的拷问

    掌握mysql_直击灵魂的拷问作者 | Jeskson 来源 | 达达前端小酒馆 MySQL管理,数据库管理和数据表管理,用户管理。 初始化数据库,创建数据库,查看数据库,删除数据库。 创建数据表,查看数据表,修改数据表,删除数…

    2022-12-25
    148
  • datatype数据类型_navicat各种数据类型

    datatype数据类型_navicat各种数据类型1、常用数据类型映射表: 2、日期时间和大对象映射表。

    2023-01-29
    161
  • 缓冲池 – MySQL 8.0官方文档笔记(五)

    缓冲池 – MySQL 8.0官方文档笔记(五)文档版本:8.0 来源:buffer pool 上一篇:如何减少和处理死锁 本篇主要介绍InnoDB的缓冲池。 缓冲池(Buffer Pool)是InnoDB在内存中缓存表和索引数据的区域。通过缓冲池

    2023-04-18
    148
  • MongoDB入门基本操作命令[通俗易懂]

    MongoDB入门基本操作命令[通俗易懂]MongoDB入门 一. 基础概念 在mongodb中是通过数据库、集合、文档的方式来管理数据,下边是mongodb与关系数据库的一些概念对比: SQL术语/概念 MongoDB术语/概念 解释/说…

    2023-03-11
    163
  • Python中的完整命令集

    Python中的完整命令集a href=”https://beian.miit.gov.cn/”苏ICP备2023018380号-1/a Copyright www.python100.com .Some Rights Reserved.

    2023-12-05
    108
  • Hive-内部表&外部表&分区表&扩展命令「终于解决」

    Hive-内部表&外部表&分区表&扩展命令「终于解决」先看下如何创建数据表 create [external] table if not exists 表名 (列名数据类型 [comment 本列注释],…) [comment 表注释] [parti

    2023-03-11
    163

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注