用 MySQL SELECT SLEEP() 优雅模拟网络超时与并发死锁


你写了一个接口,配置了MyBatis的查询超时时间为 3 秒(readTimeout=3000)。
测试痛点:怎么验证这个超时配置生效了?

  • 笨办法:造几千万条数据,写一个巨复杂的 SQL 让它跑慢点。
  • 土办法:写个断点,手动卡住程序,或者让运维去把数据库网线拔了。
  • 优雅办法:改一下 SQL,注入一个SLEEP(5)

SELECT SLEEP()是 MySQL 的内置函数,它能让当前的 SQL 执行线程“睡眠”指定的秒数。这在测试系统的健壮性、连接池配置以及并发锁机制时,好用到爆炸。


1. 核心原理:让数据库“睡”一会儿

语法非常简单:

SELECTSLEEP(N);
  • 参数 N:暂停的秒数(支持小数,如 0.5)。
  • 返回值:正常结束后返回0
  • 效果:假如执行SELECT SLEEP(3),MySQL 线程会挂起 3 秒,这期间该连接是被占用的。

2. 四大实战场景

场景一:验证应用层的 Timeout 配置

这是最常用的场景。我们需要验证 Spring Boot / JDBC 是否能正确处理数据库超时异常。

测试 SQL:

-- 假设业务查询是查用户SELECT*FROMusersWHEREid=1ANDSLEEP(5);

预期结果:
如果你的应用层配置了socketTimeout=3000(3秒),那么 3 秒后,你的 Java 程序应该捕获到SocketTimeoutExceptionMySQLTimeoutException,而不是傻傻地等 5 秒。

场景二:测试连接池 (Connection Pool) 的抗压能力

背景:当数据库查询变慢时,连接池很容易被占满,导致整个系统不可用(雪崩效应)。
测试方案:
利用 JMeter 或 Apache Benchmark 开启 50 个线程,并发请求一个执行SELECT SLEEP(10)的接口。
观察:
如果你的连接池最大连接数 (maxActive) 设置为 20。你会发现前 20 个请求进去了,后面的请求会开始排队(Waiting),最终报错“Get connection timeout”。
目的:验证连接池满载时的降级策略和报警机制是否生效。

场景三:复现并发锁与死锁 (Locking & Deadlock)

背景:有些并发 Bug 只有在两个事务“同时”执行时才会出现。但在本地调试时,代码跑得太快,很难手动模拟“同时”。
技巧:SLEEP强行延长事务持有锁的时间。

事务 A (模拟长事务):

BEGIN;UPDATEproductsSETstock=stock-1WHEREid=100;-- 强行持有锁 20 秒,给事务 B 制造机会SELECTSLEEP(20);COMMIT;

事务 B (测试被阻塞):
在事务 A 睡觉的 20 秒内,启动事务 B 去更新同一行,观察是否会被阻塞(Block)或超时。

场景四:安全攻防中的“时间盲注” (Time-based Blind SQLi)

这是黑客最喜欢的场景,也是开发者必须防范的。
背景:某些接口即使报错也不会回显错误信息(Blind),黑客无法知道 SQL 是否注入成功。
攻击手段:
http://api.com/user?id=1 AND SLEEP(5)
判断标准:

  • 如果接口立即返回,说明没有注入漏洞(输入被过滤了)。
  • 如果接口卡了 5 秒才返回,说明SLEEP(5)被执行了,注入成功!

3. 避坑指南 (Danger Zone)

虽然SLEEP好用,但它在生产环境是危险品

  1. 严禁在生产环境业务代码中使用:
    万一你手抖把SLEEP(1)写进了线上代码,只要 QPS 稍微高一点,数据库连接池瞬间就会被占满,直接导致全站宕机(Denial of Service)。
  2. WHERE 子句中的陷阱:
    注意!SLEEP每行执行一次
-- 假设 users 表有 1000 行SELECT*FROMusersWHEREid>0ANDSLEEP(1);

后果:并不是睡 1 秒,而是睡1000 x 1 = 1000 秒!MySQL 会扫描每一行,对每一行都执行一次睡眠。这绝对是毁灭级的。
3.主从复制延迟:
基于 Statement 格式的 Binlog 复制,会将SLEEP语句同步到从库执行。主库睡了 10 秒,从库回放时也要睡 10 秒,导致主从延迟瞬间飙升。


4. 总结

SELECT SLEEP()是后端开发者的“混沌工程”入门工具。

  • 用它测试超时:验证你的代码会不会在网络抖动时挂起。
  • 用它测试并发:它是复现死锁和竞态条件的神器。
  • 小心使用:别在全表扫描的WHERE里用它,否则你就要去写事故报告了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1183346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3-python县志捐赠与借阅信息管理系统的设计与实现16069432

目录摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 该系统基于Vue3和Python技术栈,设计并实现了一个县志捐赠与借阅信息管理平台,旨在解决传统县志管理中效…

2026年AI优化推荐:多场景实战排名,解决企业获客与品牌曝光核心痛点 - 十大品牌推荐

2026年AI优化推荐:技术自研与效果可视服务商全景解析 2026年,生成式AI技术的深度渗透使得AI优化(GEO)成为企业获取智能流量、驱动业务增长的关键战略。然而,市场服务商能力各异,从平台型巨头到垂直领域专家,企业…

Kali Linux 内网渗透:深度工程实施手册

第一阶段:隧道与代理(内网渗透的 “高速公路”)在内网中,你经常遇到的情况是:你只能控制一台 Web 服务器,但它身后有 10.10.10.x/24 的核心网段。你的 Kali 无法直接访问内网 IP,必须通过 Web 服…

2026年AI优化推荐:基于多行业实战评价,针对流量分散与转化痛点指南 - 十大品牌推荐

2026年五大标杆AI优化公司权威行业测评TOP5,AI优化公司哪家强 随着生成式人工智能技术全面渗透商业场景,企业获取流量与用户认知的核心阵地已从传统搜索引擎转向AI对话界面。AI优化(此处特指生成式引擎优化GEO)作为…

多智能体协作驱动的多模态医疗大模型系统:RAG–KAG双路径知识增强与架构的设计与验证(上)

摘要 多模态医疗大模型在医学影像解读与临床文本自动化生成方面展现了突破性的潜力,为智慧医疗的发展注入了强劲动力。然而,在面向真实世界、高风险的临床环境部署时,这类模型普遍面临三大核心挑战:一是多源异构数据(如…

【教程4>第10章>第22节】基于FPGA的图像Laplace边缘提取算法开发——Laplace拉普拉斯卷积运算模块

目录 1.软件版本 2.Laplace拉普拉斯卷积运算模块的实现分析 3.Laplace拉普拉斯卷积运算模块的verilog实现 欢迎订阅FPGA/MATLAB/Simulink系列教程 《★教程1:matlab入门100例》 《★教程2:fpga入门100例》 《★教程3:simulink入门60例》 《★教程4:FPGA/MATLAB/Simulink联合…

避坑指南:精准度高、售后好的国产不锈钢电子地磅品牌推荐,上海花潮实业实力解析 - 品牌推荐大师1

面对市场上琳琅满目的电子地磅品牌和型号,许多采购者在挑选时往往感到迷茫:究竟哪一款才适合自己?如何判断一台地磅的质量好坏?是看重价格、量程,还是品牌?本文将以上海花潮实业有限公司的不锈钢电子地磅为例,为…

深入解析:概率论与数理统计第一章 概率论的基本概念

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

软件测试在职人员,如何持续学习?

中国有句俗话叫“活到老,学到老”,虽然进入职场的我们已经远离了学校,但这并不代表着就可以不再学习。持续性的学习不仅能增长我们的见识,也能让职场中的我们变得更加优秀。但在忙碌的职场生活中,职场中软件测试同学该…

技术文章:解决 PowerShell 模块加载无响应问题的实用指南

技术文章:解决 PowerShell 模块加载无响应问题的实用指南 摘要 本文通过分析 Invoke-Obfuscation 模块加载案例,深入探讨了 PowerShell 模块加载的各种机制,并提供了一套系统性的故障排除方法。文章适合 PowerShell 开发者和系统管理员阅读。…

2026国内最新螺丝定制厂家最新top5排行榜发布!广东等地优质组合螺丝/端子螺丝/螺丝定制/螺丝加工公司及供应商综合实力盘点 - 品牌推荐2026

随着制造业智能化升级与新能源、汽车电子等高端领域蓬勃发展,螺丝作为核心基础紧固件,其定制化需求呈现爆发式增长,对精度、性能与交付效率的要求达到新高度。但行业普遍存在规格匹配度不足、品质稳定性欠缺、定制周…

提拔快的项目经理,打死也不会告诉别人的3个反向操作!

职场里项目经理想往上走,真🙅不是光靠埋头干活就行。 有些人天天埋头干活,项目接了不少,班也加了不少,可职位就是不升;反观另一些人,看着没怎么干活,反而升得飞快。 很多人觉得人家…

探讨忻州比较好的geo推广机构情况,如何选择 - 工业品牌热点

在AI搜索重塑企业获客逻辑的当下,GEO推广作为抢占AI搜索流量的核心手段,成了ToB企业破局获客难的关键。但市面上GEO推广机构鱼龙混杂,企业该如何选到搜得到、接得住、效果稳的合作伙伴?本文通过五个高频问题,结合…

大模型学习指南:10个核心概念详解,收藏学习不走弯路

这篇文章是写给AI初学者的指南,详细解释了10个让小白头疼的大模型核心概念:Token、Context Window、Temperature等。作者用通俗易懂的比喻和实例,将复杂技术概念转化为普通人能理解的内容,帮助读者真正掌握AI时代的入门知识。文章…

AI一周重要会议和活动概览(1.19-1.25)

一、【会议通知】第40届AAAI人工智能国际会议将于2026年1月20日至27日在新加坡博览中心举行AAAI人工智能会议(AAAI Conference on Artificial Intelligence)由人工智能促进会(AAAI)主办,是人工智能领域中历史最悠久、涵…

vLLM模型脚本目录规范

目录一、通用结论(直接可用)大模型存放的目录模型下载目录:这是最重要的点1️⃣ HuggingFace 默认行为(不推荐长期用)2️⃣ 正确做法:显式指定模型目录(强烈推荐)方法一:设置环境变量(最常用)方法二:直接指…

基于51/STM32单片机交流直流电压电流电表功率电量过载抄表无线设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

02-电表 基于51/STM32单片机交流直流电压电流电表功率电量过载抄表无线设计(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码直流电压直流电流AD转换LCD1602液晶C51-62 交流电压电流功率过载保护AD转换报警液晶C51-86N 蓝牙无线…

2026年AI搜索优化推荐:基于垂直行业实战排名,涵盖B2B与消费场景获客痛点 - 十大品牌推荐

2026年中国AI搜索优化服务商格局新观察:头部企业梳理与选择推荐 2025至2026年,生成式AI应用全面渗透,AI原生搜索与智能推荐已成为品牌获取用户与增长的核心渠道,AI搜索优化(GEO)也随之从一种探索性工具,升级为企…

黄金票据是什么

黄金票据(Golden Ticket),在内网渗透中,是最高权限的象征,是通往域控制器(DC)的万能钥匙。为了让你理解它,我们先不讲枯燥的 Kerberos 协议,我们来打个比方。一、 通俗比…

STM32智能PID无刷电机PWM调速正反转设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

23-440、STM32智能PID无刷电机PWM调速正反转设计(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码产品功能描述: 本系统由STM32F103C8T6单片机核心板、1.44寸TFT彩屏、(无线蓝牙/WIFI模块-可选&#xff0…