慢查询导致任务执行hang住
上线上了大半天,原因:因为慢查询了导致跑不出来,后来同事帮忙看了下发现慢查询了,程序hang住了
select * from table where cdate = '2023-02-01' and id > ? order by id limit 500
这条sql线上执行了300ms,一共900w数据左右,需要半个小时,后来优化了下改成了这样进行扫表,按照id去进行扫表,扫表只需要4分钟,大概每个sql只需要20ms,速度提高很多
SELECT id,name FROM table WHERE id > id and id <= maxId ORDER BY id ASC limit 500
midId: select id from table where cdate = '2023-02-01' order by id asc limit 1
maxId: select id from table where cdate = '2023-02-01' order by id desc limit 1
初始化 id := minId - 1
{
sub 数组
SELECT id,name FROM table WHERE id > id and id <= maxId ORDER BY id ASC limit 500
id = sub.id
}
对比两种扫表方式,第一种走的是 cdate 对应的索引,扫表行数在百万级别以上,然后获取数据需要进行回表
第二种方式直接走的主键索引,这种方式不需要进行回表,而且扫描行数比较低,这种方式是组内大佬进行优化想出来的
好的一点:发现问题,及时求助,同事帮忙定位到了,及时解决了导致没有一直等着,所以线上观察是很重要的,测试环境测试数据量小发现不了很多问题,线上数据量大起来,就会发现很多在测试环境发现不了的问题
慢查询治理: https://www.cnblogs.com/zhangpengfei5945/p/16085441.html
上线以后后续项目线上观察:
发现数据异常,和同事定位问题,是中间对接的时候有个指标的单位没有对其导致界面计算展示错误,需要修复,不然影响后续的任务。这里看到上线以后的数据观察是非常重要的,如果不观察,就不会发现异常,后续修复会更加的困难
上游数据错了,这个时候有点慌,经过旁边同事提醒,还是仔细分析:查数据看历史记录,无论是不是自己的原因,后面遇到问题尽量都不要慌了,深呼吸下,提醒自己,如果是自己的问题,就认,然后去修复改正,如果是上游的问题,就去发出来,然后看看大家有什么方案,积极去解决推动
总结
- 线上和测试环境的不一致,测试环境正常,线上环境不一定预期内的正常,比如数据量,用户操作等等,都可能是之前没有考虑到的情况,上线之后一定要观察下
- 慢查询还是要注意的,平时300ms的sql也不会影响使用,有些场景就会影响使用了
- 后续产品的运营和交互过程中要去观察体验看下,看数据是否符合预期
- 自己出错了或者上游导致的出错,遇到问题不要慌张,深呼吸,让自己冷静下来,去分析、去解决
参考:
https://my.oschina.net/u/4090830/blog/5571483
慢查询导致任务执行hang住的更多相关文章
- df执行hang住
一.现象 在linux操作系统中,执行df -h命令,后hang住 二.思路 排查是否存在Nfs问题,无法正常挂载nfs路径导致的问题. 三.解决过程 3.1 cat /etc/rc.local #m ...
- truncate表hang住(等待时间较长),出现enq:RO fast object reuse等待事件
有一个应用truncate表等待了一晚上,一个定时任务,跑了几年了,今天早上来发现昨晚没有执行完成,hang住了,查询发现等待事件 fast object reuse. 10.2.0.4的库 Bug ...
- oracle故障处理之删除大表空间hang住
背景 数据库分区表数据越来越大,需要对过期话的数据进行迁移,以及大的分区表需要进行数据的清理和删除,达到释放磁盘空间的目的. 问题说明 环境:linux 6.X 数据库:oracle 11.2.0.4 ...
- 【转载】mysql主键的缺少导致备库hang
最近线上频繁的出现slave延时的情况,经排查发现为用户在删除数据的时候,由于表主键的主键的缺少,同时删除条件没有索引,或或者删除的条件过滤性极差,导致slave出现hang住,严重的影响了生产环境的 ...
- mysql主键的缺少导致备库hang
最近线上频繁的出现slave延时的情况,经排查发现为用户在删除数据的时候,由于表主键的主键的缺少,同时删除条件没有索引,或或者删除的条件过滤性极差,导致slave出现hang住,严重的影响了生产环境的 ...
- 一则因为numa引发的mysqldump hang住
新买的dell r430服务器,双CPU,64G内存,单CPU32g,swap 3G 出现故障现像:mysqldump时会hang住,innodb_buffer_pool_size = ...
- hadoop之 node manager起不来, 执行mapreduce 程序hang住
现象: node manager起不来, 执行mapreduce 程序hang住 namenode 进程状态查询[root@hadp-master sbin]# jps8608 ResourceMan ...
- Flash Recovery Area空间不足导致DB不能打开或hang住处理方法
当归档目录设置在闪回恢复区,并且闪回恢复区又满了的情况下, DB 就会无法归档而hang住或者无法打开. 这种情况下打开数据库会遇到如下错误信息: SQL> select status from ...
- Oracle数据库shutdown immediate被hang住的几个原因
实验操作环境: 操作系统:Red Hat Enterprise Linux ES release 4 (Nahant Update 6) ...
- 一次进程hang住问题分析。。。
这两天有同学使用数据校验工具时发现进程hang住了,也不知道什么原因,我简单看了看进程堆栈,问题虽然很简单,但能导致程序hang住,也一定不是小问题.简单说明下程序组件的结构,程序由两部分构成,dbc ...
随机推荐
- OkHTTP发送POST请求传送JSON数据
导入依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> ...
- vSphere是什么,你了解么?
最近这两周都在学习VMware vSphere相关知识,昨天在做了一个项目后,VMware虚拟化之旅暂告一段落了.晚上一个人闲下来时回想了之前所学,忆起vSphere时,大脑一片空白... 我突然发现 ...
- 搭建docker swarm集群实现负载均衡
Swarm简介:Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源.Swarm ...
- Linux中查看进程状态信息
一.常用命令总结 ps -l 列出与本次登录有关的进程信息: ps -aux 查询内存中进程信息: ps -aux | grep *** 查询***进程的详细信息: t ...
- 官方的 MCP C# SDK:csharp-sdk
csharp-sdk 这是 Model Context Protocol(MCP)官方提供的 C# SDK,为 MCP 服务器和客户端提供简单易用的接口, 主要由微软维护.MCP 是由 Claude( ...
- bug|SCSS相关问题
参考链接 [系统学习css]scss和sass以及 less的关系,node-sass.dart-sass和sass-loader是啥
- .NET Core & ConsoleApp & appsettings.json
准备 Visual Studio 2017 .NET Core 2.1 新建控制台应用(.NET Core) 默认的 Program.cs // Program.cs using System; na ...
- 最爱lx-music的音源哪里去了?
最爱lx-music,让你满心喜欢,可是音源没有了,因为被投诉给全部关了. 公心作者增加了自定义源. 六音提供了音源,做了一件大善事.注意的是音源会一直初始化.那就下载适合的版本: 欣赏阿鲁阿卓如痴如 ...
- 如何开发 MCP 服务?保姆级教程!
最近这段时间有个 AI 相关的概念特别火,叫 MCP,全称模型上下文协议(Model Context Protocol).这是由 Anthropic 推出的一项开放标准,目标是为大型语言模型和 AI ...
- Windows IntelliJ IDEA 快捷键终极大全
自动代码 常用的有fori/sout/psvm+Tab即可生成循环.System.out.main方法等boilerplate样板代码 . 例如要输入for(User user : users)只需输 ...