游客发表

深度优化!MySQL百亿级大表性能提升攻略

发帖时间:2025-11-04 07:20:07

最近,深度我在工作中遇到一个数据库配置问题,优化亿级涉及一个主从结构的大表数据库实例。具体来说,提升每天凌晨,攻略数据库会触发SLA(服务等级协议)告警。深度

该告警表明主从同步延迟严重。优化亿级如果此时尝试从主库切换到从库,大表切换时间将会很长。提升

深度优化!MySQL百亿级大表性能提升攻略

系统需要额外的攻略时间来追赶并同步延迟的数据,以确保主从数据库之间的深度数据一致性。

进一步分析发现,优化亿级这个问题的大表主要原因是数据库实例中大量的免费信息发布网慢查询。

这些慢查询是提升指执行时间超过1秒的SQL查询。

我们发现,攻略每天晚上应用程序执行的一个特定任务——删除一个月前的旧数据,是这些慢查询的主要来源。

分析

利用pt-query-digest工具分析最近一周的mysql-slow.log。

复制pt-query-digest --since=148h mysql-slow.log | less1.

结果第二部分

在一周内,记录的慢查询总执行时间为25,403秒,最长的慢SQL执行时间为266秒,云南idc服务商平均每个慢SQL执行时间为5秒,平均扫描了1,766万行数据。

结果第二部分

对select arrival_record操作的慢查询次数超过40,000次,平均响应时间为4秒。而delete arrival_record记录了6次,平均响应时间为258秒。

select xxx_record语句

select arrival_record的慢查询语句如下所示,where条件中的参数字段相同,但参数值不同:*select count(\*) from arrival_record where product_id=26 and receive_time between 2024-03-25 14:00:00 and 2024-03-25 15:00:00 and receive_spend_ms>=0\G

*

select arrival_record语句在MySQL中最多扫描了5600万行,平均扫描了172万行,推断出大量的扫描行数导致了较长的执行时间。

查看执行计划 复制explain select count(*) from arrival_record where product_id=26 and receive_time between 2024-03-25 14:00:00 and 2024-03-25 15:00:00 and receive_spend_ms>=0\G;

    热门排行

    友情链接