慢查询导致任务执行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 ...
随机推荐
- C#/.NET/.NET Core技术前沿周刊 | 第 30 期(2025年3.10-3.16)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- base64编码与一般的ASCII码和二进制编码有什么不同?base64详解
在密码学实践中,经常会用到Base64编码.比如大名鼎鼎的密码学挑战题"Matasano Crypto Challenges"的第一集合的第一题,就是要求把一个Hex编码的字符串转 ...
- 多态的成员访问特点和好处--java进阶day02
1.多态的成员访问特点 1.成员变量访问特点 分为两个阶段,编译阶段,系统会看父类中是否存在该成员变量,如果存在,运行阶段就会使用父类的成员变量,否则报错 当我们在父类中删去num时,编译直接报错 2 ...
- 【长知识】BIOS
设置最新UEFI BIOS 本章导读 BIOS是电脑启动和操作的基础,若电脑系统中没有BIOS,则所有硬件设备都不能正常使用.UEFI是目前最新的BIOS类型,以后会逐渐取代传统的BIOS.本章将认识 ...
- macOS 字体文件所在路径
目录 用户字体路径/Library/Fonts 系统字体路径/System/Library/Fonts macOS font 也就是字体文件,有2个可用路径 这里以 macOS Monterey 版本 ...
- FastAPI中的Pydantic密码验证机制与实现
title: FastAPI中的Pydantic密码验证机制与实现 date: 2025/03/31 00:04:51 updated: 2025/03/31 00:04:51 author: cmd ...
- nodejs文本文件的读写
文本文件的换行符 方法一: var EOL = fileContents.indexOf("\r\n") >= 0 ? "\r\n" : "\n ...
- Fast Prefix Sum Implementation Using Subgroups in GLSL Compute Shaders
利用 Vulkan 1.1 的 subgroup 特性加速 ComputeShader 的前缀和计算,参考: Vulkan Subgroup Tutorial - Khronos Blog - The ...
- 使用Python解析求解拉普拉斯方程
引言 大家好!今天我们将探讨一个经典的偏微分方程-拉普拉斯方程,并使用 Python 进行求解.拉普拉斯方程广泛应用于物理学中,尤其是在电磁学.流体力学和热传导等领域.通过这篇文章,你将了解什么是拉普 ...
- ESP-IDF教程1 开发环境
1.开发环境 对于 ESP32 系列芯片的开发环境主要有如下几种方式: ESP-IDF(Espressif IoT Development Framework) Arduino PlatformIO ...