《MYSQL 实战45讲》 慢查询产生的原因

一.查询长时间不返回的原因

首先要执行下show processlist来查看各个线程的状态(是否在等待锁)

1.DML写锁导致其他线程对改表的读取被阻塞

当一个线程正在持有t表的DML写锁时,其他线程查询语句就会被阻塞,一直等到DML写锁释放才能执行。

这个63870上的线程的state是waiting for table metadata lock,即在等待DML元数据锁的释放。

解决:使用查询语句查出是哪个过程在阻塞,使用kill命令断开这个连接即可

select blocking_pid from sys.schema_table_lock_waits

2.等flush

我们执行select * from t_19 where id=1;这条查询语句时,一直不返回,检测processlist发现在等待flush。

从processlist中可以看出,有2个线程在等待flush,但是flush这个过程是很快的,为什么会阻塞住呢,因为这个flush线程想要flush时,发现有另一个线程正在执行查询,为什么这个线程在执行查询就会导致这个flush被阻塞?

FLUSH TABLE就是关闭打开的表,并且刷新查询缓存 ,如果有LOCK TABLES ... READ存在则不允许

但是从processlist可以看到,我的查询语句没有加读锁啊?

原因是这3条语句是在3个事务中执行的,可重复读或者串行化的隔离级别下,select语句会加共享读锁

总的来说就是事务A中的select sleep(1) from t_19;语句导致这个表加了共享读锁,然后事务B中的flush tables t_19;语句就被阻塞住了,因为它想关闭表,但是事务A的查询语句还没执行完,最后事务C中的 select * from t_19 where id=1;这条普通查询就被阻塞住了,因为在等待flush。

解决:把第一个查询停止就行了

3.等行锁

一个查询语句会被另一个线程对同一行数据上所获取的写锁阻塞。

二.查询慢的原因

1.没加索引导致扫描行数太多

2.一致性读的时候,数据的版本太多,需要一直回滚到当前事务应该看到的数据版本,导致查询慢

事务A开始

事务B开始

事务B执行update t set c=c+1 where id =1(100w次)

事务A执行select c from t where id =1(执行800ms后,得到结果:c=1)

事务A执行select c from t where id =1 lock in share mode(执行0.2ms,得到结果:c=1000001)

为什么第一个查询比第二个查询慢这么多?因为第二个查询加了s型锁,是当前读,直接读最新数据c=1000001

而第一个查询是快照读,而事务B的插入语句的结果对于事务A是不应该可见的(事务B未提交并且事务B在事务A开始后才开始),并且这个语句执行了太多次,每次都生成一个undolog条目,所以对于事务A来说,要一直根据undo log得到他能看到的数据版本,要不断回滚,这就导致了查询时间过长。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RWA“两链一桥”平台在香港金融科技周亮相

第九届香港金融科技周今日开幕,记者在主题为Trust Bridge的论坛上获悉,蚂蚁数科旗下蚂蚁链在此次金融科技周首次公开了其为RWA业务打造的“两链一桥”平台,旨在帮助更多内地新能源资产赴港RWA,实现技术赋能实体资产。 “两链一桥“…

MySQL8 安装配置及卸载教程

MySQL8 安装配置及卸载教程 0 卸载 MySQL 如果之前没安过 MySQL ,或者卸载干净了不用看这个。 如果安装中出现以下问题,有可能是为之前安装 MySQL 不成功,有残留的安装程序等文件程序或者是卸载 MySQL 不成功。 0.1 停止服务 首先进入服务…

LabVIEW航空发动机测试系统

随着航空工业的快速发展,发动机性能的测试与优化成为确保航空安全的关键任务。针对日益复杂的性能需求,开发了一套基于LabVIEW的航空发动机测试系统,能够进行精确的性能评估与实时数据分析。系统将软件与硬件深度结合,实现了自动化…

容联云容犀Copilot&Agent荣获「2024中国大模型应用之星」

近日,2024中国智能应用发展大会于北京举行,容联云凭借大模型应用——容犀Copilot&Agent在大模型应用领域的卓越表现和标杆案例,荣获“2024中国大模型应用之星奖”。 中国软件网CEO、海比研究院院长曹开彬在开场致辞中明确指出&…

建筑行业知识管理:构建高效文档管理系统,提升项目协作与管控能力

各行各业都在经历数字化转型,建筑行业也不例外,正经历着前所未有的变革。随着工程项目规模的扩大和复杂性的增加,传统的管理方式已难以满足高效协作和精准管控的需求。因此,构建一个高效的在线AI知识库管理系统,成为提…

【STM32】SD卡

(一)常用卡的认识 在学习这个内容之前,作为生活小白的我对于SD卡、TF卡、SIM卡毫无了解,晕头转向。 SD卡:Secure Digital Card的英文缩写,直译就是“安全数字卡”。一般用于大一些的电子设备比如:电脑、数码相机、AV…

【视频】Camera结构详解

1、爆炸图 先看几张爆炸图: lens:镜头 VCM:音圈马达 Voice coil motor Mount :固定座 IR Filter:滤光片 Sensor:感光传感器(图像传感器) Substrate:基板 FPC:柔性印制电路板 2、镜头 镜头是仅次于Sensor芯片影响画质的第二要素,其组成是透镜结构,由几片透镜组…

使用微信免费的内容安全识别接口,UGC场景开发检测违规内容功能

大家好,我是小悟。 内容安全识别主要针对的是有UGC即用户生成内容的功能场景,通过结合内容安全的审核能力,应对文本、图片、音频内容类型下的敏感内容识别、涉黄内容识别、暴恐内容识别、辱骂内容识别等违规问题,可以提高审核效率…

UE5 射线折射

这个判断是否有标签是需要带有此标签的Actor来反射

【PnP】详细公式推导,使用DLT直接线性变换法求解相机外参

文章目录 🚀PnP1️⃣ 求解不考虑尺度的解2️⃣ 恢复解的尺度 🚀PnP PnP(Perspective-n-Point)是求解3D到2D点相机外参的算法。PnP算法有DLT直接线性变换、P3P三对点估计位姿、EPnP(Efficient PnP)、BA(Bundle Adjustment)光速法平差。这里主要讲解DLT。…

二十四、Python基础语法(变量进阶)

一、引用 在定义变量的时候, 解释器会给变量和数据分别在内存中分配内存,变量中保存的是数据的地址, 称为引用,Python 中数据的传递,传递的都是引用,可以使用 id(变量) 函数,获取变量中引用地址。 # 将数字1在内存中的地址储存到变量a中 a …

Ubuntu18.04安装vscode1.94.2失败安装vscode1.84.2

系统环境:Ubuntu18.04.6 LTS 自己先去vscode官网下载好最新版本的vscode1.94.2(不下也行,反正最新版也用不了,哈哈) 网址:Visual Studio Code - Code Editing. RedefinedVisual Studio Code is a code ed…

《编程并不难:像学语文一样学习编程语言》

《编程并不难:像学语文一样学习编程语言》 一、编程为何被认为难(一)编程语言的难点(二)逻辑思维的挑战(三)抽象思维的要求(四)学习曲线的陡峭(五&#xff09…

大数据-194 数据挖掘 机器学习理论 有监督、无监督、半监督、强化学习

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

argparse的基本用法

目录 前言 一、代码示例 二、三种给定形参的方式 1.修改运行配置 配置形参​编辑 2.cmd给定形参 给定形参 3.pycharm终端给定形参 三、获取argparse帮助信息 前言 argparse 是 Python 标准库中的一个模块,用于解析命令行参数。它使得程序能够通过命令行接…

大模型低资源部署策略

文章目录 解码效率分析大模型训练后量化方法经验性分析与相关结论由于大模型的参数量巨大,在解码阶段需要占用大量的显存资源,因而在实际应用中的部署代价非常高。在本文中,我们将介绍一种常用的模型压缩方法,即模型量化(ModelQuantization),来减少大模型的显存占用,从…

MicroServer Gen8再玩 OCP万兆光口+IT直通之二

这个接上一篇,来个简单测试。 一、测试环境 PC端:Win10,网卡:万兆光纤(做都做了,都给接上),硬盘使用N年的三星SSD 840 交换机:磊科GS10,带两个万兆口 Gen…

Python: Print Table on console

# encoding: utf-8 # 版权所有 2024 ©涂聚文有限公司 # 许可信息查看: # 描述: # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2023.1 python 3.11 # OS : windows 10 # Datetime : 2024/10/28 22:08 # User : geo…

量子容错计算

基本思想 容错量子计算的基本想法是,在合理编码后的量子态上直接量子计算,以至于不完全需要解码操作。假设有一个简单的量子电路,但不幸的是噪声影响着这个电路的每一个元件,包括量子态的制备、量子逻辑门、对输出的测量&#x…

关于CUDA、cuDNN、nvcc、cudatookit、pytorch版本的总结

本人老是被网上的教程绕得云里雾里,所以觉得有必要写下一篇文章当做笔记供之后参考。 参考文章1:显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么? - 知乎 (zhihu.com) 参考文章2:Pytorch 使用不同版本…