《MYSQL45讲》kill不掉的线程
kill query + 线程id :终止这个线程正在执行的语句
kill connection + 线程id :关闭这个线程的连接,也会先停止这个线程正在执行的语句。这个connection可以缺省。
本文讨论的情况是:使用了kill命令,却没有断开连接,show processlist命令执行结果中,被kill的线程显示killed,这个killed是什么意思?以及一些常见的命令误解
1.收到kill query命令后,线程会做什么?
1.MYSQL中有个处理的kill命令的线程,处理kill命令的线程首先会设置该线程的状态为KILL_QUERY
2.给该线程发送一个“你被kill了”的信号
一个语句的执行过程中有多处埋点,执行到埋点处就会判断自己的线程状态。
如果线程在等待某个资源,那这个等待必须是可以唤醒的,否则就无法到达埋点处。
执行kill query 线程id命令,处理kill命令的线程首先会设置该线程的状态为KILL_QUERY,然后给该线程发送一个信号,该线程收到信号后知道自己被kill了,如果正在锁等待,就停止等待。去处理这个KILL_QUERY状态。 如果不发信号,该线程就仍然在锁等待,不知道自己被kill了。
2.收到kill connection命令后,会发生什么?
1.将被kill线程的状态设置为Kill_Connection
2.关闭被kill线程的网络连接
3.由于最大并发线程数不够导致的新线程等待并且kill不掉
当线程数已经达到最大并发线程数(innodb_thread_concurrency),此时一个新的查询请求想进来,需要等待有空闲线程,所以会每隔10ms尝试进入一次,并没有去判断线程的状态,所以此时kill query这个线程是没用的,而kill connection是可以的,直接关闭网络连接,但是一查,该线程仍然在等待中,不过状态是KILLED,因为
如果一个线程的状态是KILL_CONNECTION,就会把Command列显示成Killed。
为什么这样设计,因为断开连接只是将客户端和服务端连接断开了,而服务端的线程还是存在的。
那么该线程什么时候才能停止呢?
答案是要等到该线程能够进入innodb时,才会判断出自己的状态是了KILL_QUERY或者KILL_CONNECTION,此时才会进入终止线程的逻辑。
4.由于耗时长导致的一段时间内线程kill不掉
情况1:大事务,被kill时要将前面的更改都回滚,耗时长。
情况2:大查询回滚。
情况3:DDL命令执行到最后时被kill。
关于客户端的3个误解
1.在一个查询语句长时间阻塞时,客户端直接执行ctrl+c可以终止这个线程吗?
是不可以的,执行ctrl+c时,是启动另一个线程向服务端发送kill query命令,而MYSQL是停等协议,也就是要等到客户端的操作只能影响你客户端的线程,你ctrl+c只是客户端线程终止,只是你客户端退出了,服务端的线程仍然在运行。
2.数据库的表特别多,客户端连接就会很慢
客户端连接服务端需要执行的步骤是TCP握手,用户账号密码校验,获取权限。
可以看出来与表的数量没有关系。
表越多连接越速度越慢的原因是
客户端在连接成功后,需要将“每个库有哪些表”存本地缓存,用于名称补全的。
使用-A可以取消掉这个操作。
3.-quick命令不会让服务端变快
MYSQL客户端发送请求后,接收服务端返回结果的方式有两种:
1.在本地开个缓存,先把结果存起来。
2.不缓存,读一个处理一个
默认是第一个,而使用-quick就算第2个设置。
如果不缓存,本地如果处理慢了,就会导致服务端的结果被阻塞(因为停等协议),就导致服务端变慢了。
相关文章:
《MYSQL45讲》kill不掉的线程
kill query 线程id :终止这个线程正在执行的语句 kill connection 线程id :关闭这个线程的连接,也会先停止这个线程正在执行的语句。这个connection可以缺省。 本文讨论的情况是:使用了kill命令,却没有断开连接,show processli…...
单体架构 IM 系统之 Server 节点状态化分析
基于 http 短轮询模式的单体架构的 IM 系统见下图,即客户端通过 http 周期性地轮询访问 server 实现消息的即时通讯,也就是我们前面提到的 “信箱模型”。“信箱模型” 虽然实现非常容易,但是消息的实时性不高。 我们在上一篇文章(…...
java xml 文本解析
示例文本 <Message><MessageName>time_request</MessageName><Timestamp>20220217165432906359</Timestamp><Body><EQPID>CMMAB01-DTP01</EQPID></Body> </Message>示例代码 import org.w3c.dom.Document; impo…...
Docker占用空间太大磁盘空间不足清理妙招
docker占用空间太大了,磁盘空间不足,清理3妙招 清除所有已停止的容器(container)、未被任何容器所使用的卷(volume)、未被任何容器所关联的网络(network)、所有悬空镜像(…...
编程之路,从0开始:字符函数和字符串函数
Hello大家好!很高兴我们又见面了! 给生活添点passion,开始今天的编程之路! 目录 1、字符分类函数 2、字符转换函数 3、字符串函数 1、 strcpy 2、 strcat 3、 strcmp 4、strlen(s) 5、strstr(s1, s2) 6、 strtok(s1, s2…...
化工防爆巡检机器人:在挑战中成长,为化工安全保驾护航
随着全球能源需求的不断攀升,化工行业的安全性与高效性愈发受到关注。化工设施规模巨大,而且其中多数存在高风险因素,像是易燃易爆化学物质、高温环境、有毒有害物质以及高压设备等。仅2023年,国内危化品事故就多达652起ÿ…...
音频采样数据格式
音频信号在模拟到数字转换时,会涉及到多个关键参数,如采样率、位深度、通道数等。下面是常见的音频采样数据格式及其相关概念: 1. 采样率 (Sample Rate) 采样率指的是每秒钟对音频信号进行采样的次数,单位为赫兹 (Hz)。常见的值…...
【pytorch】常用强化学习算法实现(持续更新)
持续更新常用的强化学习算法,采用单python文件实现,简单易读 2024.11.09 更新:PPO(GAE); SAC2024.11.12 更新:OptionCritic(PPOC) "PPO" import copy import time import torch import numpy as np import torch.nn as …...
DAY59||并查集理论基础 |寻找存在的路径
并查集理论基础 并查集主要有两个功能: 将两个元素添加到一个集合中。判断两个元素在不在同一个集合 代码模板 int n 1005; // n根据题目中节点数量而定,一般比节点数量大一点就好 vector<int> father vector<int> (n, 0); // C里的一…...
Mybatis执行自定义SQL并使用PageHelper进行分页
Mybatis执行自定义SQL并使用PageHelper进行分页 基于Mybatis,让程序可以执行动态传入的SQL,而不需要在xml或者Select语句中定义。 代码示例 pom.xml 依赖 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId&g…...
OpenCV DNN
OpenCV DNN 和 PyTorch 都是常用的深度学习框架,但它们的定位、使用场景和功能有所不同。让我们来对比一下这两个工具: 1. 框架和功能 OpenCV DNN:OpenCV DNN 模块主要用于加载和运行已经训练好的深度学习模型,支持多种深度学习…...
什么时候需要复写hashcode()和compartTo方法
在Java编程中,复写(重写)hashCode()和compareTo()方法的需求通常与对象的比较逻辑和哈希集合的使用紧密相关。但请注意,您提到的compartTo可能是一个拼写错误,正确的方法名是compareTo()。以下是关于何时需要复写这两个…...
PostgreSQL 日志文件备份
随着信息安全的建设,在三级等保要求中,要求日志至少保留半年 180 天以上。那么 PostgreSQL 如何实现这一要求呢。 我们需要配置一个定时任务,定时的将数据库日志 log 下的文件按照生成的规则将超过一定时间的日志拷贝到其它的路径下…...
2023年MathorCup数学建模B题城市轨道交通列车时刻表优化问题解题全过程文档加程序
2023年第十三届MathorCup高校数学建模挑战赛 B题 城市轨道交通列车时刻表优化问题 原题再现: 列车时刻表优化问题是轨道交通领域行车组织方式的经典问题之一。列车时刻表规定了列车在每个车站的到达和出发(或通过)时刻,其在实际…...
数字农业产业链整体建设方案
1. 引言 数字农业产业链整体建设方案旨在通过数字化手段提升农业产业效率与质量,推动农业现代化进程。方案聚焦于资源数字化、产业数字化、全局可视化与决策智能化的实现,构建农业产业互联网平台,促进农业全流程、全产业链线上一体化发展。 …...
awk那些事儿:在awk中使用shell变量的两种方式
awk是Linux中一款非常好用的程序,可以逐行处理文件,并提供了强大的语法和函数,和grep、sed一起被称为“Linux三剑客”。 在使用awk处理文件时,有时会用到shell中定义的变量,由于在shell中变量的调用方式是通过$符号进…...
大数据面试题--kafka夺命连环问(后10问)
目录 16、kafka是如何做到高效读写? 17、Kafka集群中数据的存储是按照什么方式存储的? 18、kafka中是如何快速定位到一个offset的。 19、简述kafka中的数据清理策略。 20、消费者组和分区数之间的关系是怎样的? 21、kafka如何知道哪个消…...
智能量化交易的多样化策略与风险控制:中阳模型的应用与发展
随着金融市场的不断创新与发展,智能量化交易正逐渐成为金融投资的重要手段。中阳智能量化交易模型通过技术优势、策略优化与实时风险控制等多方面结合,为投资者提供了强有力的工具支持。本文将对中阳量化模型的技术细节、多策略组合与市场适应性进行深入…...
小皮PHP连接数据库提示could not find driver
最近遇到一个奇怪的问题,我的小皮上安装的8.0.2版本的php连接数据库正常。下载使用8.2.9时,没有php.ini,把php-development.ini改成 php.ini后,就提示could not find driver。 网上查了说把php.ini里的这几个配置打开,我也打开了&…...
2024.11.13(一维数组相关)
思维导图 1> 提示并输入一个字符串,统计该字符串中大写字母、小写字母、数字字符、空格字符的个数并输出 2> 提示并输入一个字符串,将该字符串中的所有字母挑选到一个新数组中,将所有的数字字符挑选到另一个新数组中。并且将数字字符对…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...
