千家信息网

MySQL为什么慎用if not exists写法

发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章将为大家详细讲解有关MySQL为什么慎用if not exists写法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。版本 5.6.14环境CREATE TA
千家信息网最后更新 2025年11月13日MySQL为什么慎用if not exists写法

这篇文章将为大家详细讲解有关MySQL为什么慎用if not exists写法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。



版本 5.6.14

环境
CREATE TABLE `t1` (
`id` int(11) NOT NULL,
`batchid` int(11) DEFAULT NULL,
`state` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

INSERT INTO `t1` (`id`,`batchid`,`state`) VALUES (1,1,1);
INSERT INTO `t1` (`id`,`batchid`,`state`) VALUES (2,1,1);


drop procedure if exists p;
delimiter $$
CREATE PROCEDURE `p`()
begin
if not exists (select * from t1 where id=1) then
select 'id=1 not exists';
end if;
end $$
delimiter ;

按照如下时间轴执行 ,窗口二居然被阻塞了.




查看 show engine innodb status;
发现如下信息:

---TRANSACTION 15252974, ACTIVE 2 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 2 lock struct(s), heap size 376, 1 row lock(s)
MySQL thread id 38, OS thread handle 0x1d88, query id 4663 localhost 127.0.0.1 root statistics
select * from t1 where id=1
LIMIT 0, 1000
for update
------- TRX HAS BEEN WAITING 2 SEC FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 2344 page no 3 n bits 72 index `PRIMARY` of table `mvbox`.`t1` trx id 15252974 lock_mode X locks rec but not gap waiting
Record lock, heap no 2 PHYSICAL RECORD: n_fields 5; compact format; info bits 0
0: len 4; hex 80000001; asc ;;
1: len 6; hex 000000e8bdc4; asc ;;
2: len 7; hex 030003c0100437; asc 7;;
3: len 4; hex 80000001; asc ;;
4: len 4; hex 80000001; asc ;;


------------------
---TRANSACTION 15252973, ACTIVE 15 sec
2 lock struct(s), heap size 376, 1 row lock(s)
MySQL thread id 36, OS thread handle 0x35c, query id 4615 localhost 127.0.0.1 root cleaning up

过程中 if not exists 的查询居然上了锁..

关于"MySQL为什么慎用if not exists写法"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

篇文章 写法 更多 不错 实用 信息 内容 文章 时间 版本 环境 知识 过程 参考 帮助 有关 查询 阻塞 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 过程式数据库对象有哪些 网络安全导论pdf 上海专业软件开发要多少钱 java数据库删除和增添 以网络安全为题手抄报图片 数据库安全审计系统建设方案 工行上海软件开发中心工作环境 如何查数据库表是否被锁 软件开发的推广和宣传 上海北斗校时服务器时间 我的世界打僵尸有副本的服务器 软件开发如何验证逻辑 网络安全威胁是什么意思 通信软件开发源头好货 如何管理应用软件开发存在的风险 软件开发要学会的知识 电信网络安全新闻稿 数字价值与网络安全问题 讯腾网络技术有限公司怎么样 郧阳区服务软件开发案例 安捷伦气相服务器在哪里连接 遵义网络安全技术培训容易且快速 如何进入数据库平台 阿里云服务器视频教程 软件开发的十一种模式分别是什么 数据库应用现状 泗洪辉网络技术有限公司 云南淘好车网络技术 一般软件开发环境都是什么 宣威服务器云存储经销商
0