MySQL数据库运维:运行监控及解决sql执行死锁问题

前言

        在现代数据密集型应用程序的开发和部署中,MySQL数据库的运维是至关重要的环节之一。一个良好设计和维护的MySQL数据库系统可以确保数据的准确性、可靠性和高效的访问,从而支持业务的顺利运行。然而,随着业务规模的增长和复杂性增加,MySQL数据库也面临着诸多挑战,如性能瓶颈、死锁问题等。这些问题可能导致系统的无响应,影响业务的正常运行,甚至引发数据的不一致和丢失。

        在本篇博客中,我们将探讨MySQL数据库运维中的两个关键方面:运行监控和解决SQL执行死锁问题。首先,我们将介绍如何通过监控MySQL数据库的运行状态,了解各个数据库和表的使用情况、性能瓶颈以及潜在问题。其次,我们将深入探讨MySQL数据库中死锁的成因及其影响,并提供有效的方法和策略来解决SQL执行中的死锁问题。

运行监控 

        直接上干货吧!

# 数据库大小:检查每个数据库的磁盘占用量SELECT table_schema AS "Database", 
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size in MB" 
FROM information_schema.tables 
GROUP BY table_schema;# 表的数量和大小:观察每个数据库中各个表的数量和大小,这可以帮助您了解数据分布。SELECT table_schema AS "Database", table_name AS "Table", 
ROUND((data_length + index_length) / 1024 / 1024, 2) AS "Size in MB" 
FROM information_schema.tables 
WHERE table_schema = 'your_database_name'
ORDER BY (data_length + index_length) DESC;# 查询性能:使用 SHOW PROCESSLIST 查看当前正在执行的查询,以及它们的状态和持续时间,这有助于识别潜在的性能瓶颈。SHOW FULL PROCESSLIST;# 资源使用:查看数据库的CPU和内存使用情况,可以使用操作系统的工具,如Linux的top或htop,或者使用MySQL的性能监控工具。# 访问频率和类型:通过分析日志文件或使用查询统计,了解哪些表被频繁访问以及查询类型(如SELECT, UPDATE, INSERT等)。# 安全和访问控制:检查谁可以访问数据库及其权限设置。

 

解决sql执行死锁

        如果MySQL中出现了锁表导致无响应的情况,可以采取以下步骤来解决

1、查看当前锁信息 

        首先,可以使用以下命令查看当前的锁情况,找出是哪些进程或事务导致了数据库的锁定,通过这个命令可以看到当前正在执行的查询和事务,以及它们的状态和持续时间。

SHOW FULL PROCESSLIST;

         示例:

        当表死锁时,会出现Command会出现一些一直执行的动作,很多情况是sql导致,因此,你可以观察info中的sql语句(如果你早知道是什么sql导致的话)。

        或者,通过如下方法进一步定位问题所在:

        State(状态)字段:观察每个线程的状态,特别关注处于"Locked"、“Waiting for table level lock”、"Waiting for metadata lock"等表示锁定状态的线程。这些线程可能是由于死锁或锁等待而被阻塞的。

        Command(命令)字段:查看每个线程正在执行的SQL命令,如SELECT、UPDATE、INSERT、DELETE等。某些命令可能更容易导致死锁,例如UPDATE和DELETE语句会涉及到行级锁,容易与其他事务产生冲突。

        Time(执行时间)字段:观察每个线程的执行时间,长时间运行的线程可能是死锁的候选者,因为它们可能在等待锁资源而无法继续执行。

        Info(信息)字段:某些线程可能在Info字段中包含了额外的信息,例如正在等待的资源或执行的具体操作,这些信息有助于识别是否与死锁有关。

        ID(线程ID)字段:线程ID可以帮助您跟踪和区分不同的线程,当您发现死锁问题时,可以通过线程ID来定位具体的线程并进行进一步分析。

 

2、终止长时间运行的查询或事务

        根据上面定位到的ID值,杀死导致死锁的执行线程 

# <thread_id>是你所需要杀死的线程ID
KILL <thread_id>;

 

3、优化查询和事务 或 避免与正在执行的业务冲突

        回归本质,为什么会造成死锁呢?十有八九就是资源请求冲突,同一时间增删改查等事务的执行顺序冲突

         因此,为了避免死锁,首要条件就是减少资源请求冲突,避免长时间占用和结构变更

        ①优化长时间运行的查询或事务,确保它们不会频繁地持有锁或造成数据库阻塞。可以通过优化索引、减少查询范围或调整事务隔离级别等方法来改善性能。

        ②定期监控数据库性能,调整数据库配置参数,如锁定级别、连接数、缓冲池大小等,以减少锁的竞争和数据库阻塞。 

        ③避免设计长时间运行的事务,尽量将事务拆分成更小的单元,减少锁定时间和资源占用。

        ④不要贸然更改高占用的表结构,若更改时出现死锁并无法继续读取该表,需先断开现有服务,使用kill解决死锁线程后,再做更改、重启服务

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

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

相关文章

Spring源码深度解析:三级缓存机制探究

在Spring框架中&#xff0c;三级缓存机制是容器初始化Bean过程中的一个重要组成部分。它有效地解决了循环依赖的问题&#xff0c;特别是在单例Bean的初始化过程中。本文将深入探讨Spring的三级缓存机制&#xff0c;并通过代码片段来解析其工作原理。 一、三级缓存概述 Spring…

查看HDF5文件软件(HDFView)

HDFView&#xff1a;下载地址 note&#xff1a;我们需要下载 win10 、App软件&#xff08;win10在win11也能运行&#xff09;&#xff0c;因为App软件是轻量版&#xff0c;不需要安装就可以使用。 eg&#xff1a; 下载完后解压就可以使用。

MATLAB 2016计算NDVI

MATLAB 2016计算NDVI 之前大二的一段MATLAB代码&#xff0c;突然找到&#xff0c;记录一下当时初学MATLAB的程序&#xff0c;用于读取TIFF计算归一化植被指数&#xff08;NDVI&#xff09;并将其保存为TIFF文件。 文章目录 MATLAB 2016计算NDVI读取波段数据初始化NDVI矩阵和转…

配置SSL证书需要几步,有免费的吗

我们要明白什么是SSL证书。SSL&#xff08;Secure Sockets Layer&#xff09;是一种安全协议&#xff0c;用于在互联网上进行信息加密传输&#xff0c;保护数据不被第三方窃取或篡改。SSL证书就是用来执行这种加密的一种数字证书&#xff0c;它可以提供身份验证&#xff0c;防止…

这个合租室友真的没有一点公德心,还好他搬走了

这个合租室友真的没有一点公德心&#xff0c;还好他搬走了 这个出租屋有四个房间。 有三个卧室&#xff0c;和一个隔断。 我住三个卧室中的一个。下图中右边那个就是我住的。 2023年下半年&#xff0c;左边那个屋子来了一个新租户小白。 在住的过程中&#xff0c;隔断间的租…

30V-STM32设计项目

30V-STM32设计 一、项目描述 (已验证) 基于STM32c8t6芯片设计的开发板&#xff0c;支持4-30V宽电压输入&#xff0c;串口模式自动下载功能&#xff0c;支持串口和STlink&#xff0c;方式下载程序 二、原理图介绍 电源电路采用了DCDCLDO电路&#xff0c;如果是外接DC头供电的话&…

Spring Boot 3.2.5 集成 mysql

版本 Spring Boot 3.2.5 第一步&#xff0c;添加必要依赖 // mysql jdbc 及 驱动 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency><gr…

什么是graphQL

文章目录 一、入门1.是什么&#xff1f;做什么2.如何做&#xff1f; 二、查询和变更1.字段&#xff08;Fields&#xff09;2.参数&#xff08;Arguments&#xff09;3.别名&#xff08;Aliases&#xff09;4.片段&#xff08;Fragments&#xff09;5.操作名称&#xff08;Opera…

你知道数据是如何为制造业精益生产KPI和供应链管理赋能的吗?

挖掘工业数据价值&#xff0c;形成新质生产力 随着工业4.0的逐步深入和国家对制造业高质量发展的大力扶持&#xff0c;工业数据的重要性愈发凸显&#xff0c;已然成为生产经营活动中不可或缺的核心要素。 工业数据不仅反映了生产流程中的各个环节&#xff0c;更蕴含了丰富的信…

嵌入式单片机的高级编程技巧和优化

引言 嵌入式单片机&#xff08;MCU&#xff09;是实现智能设备控制的核心&#xff0c;广泛应用于工业自动化、智能家居、医疗设备等领域。 下面将探讨STM32单片机的高级编程技巧&#xff0c;包括中断管理、低功耗模式和内存优化等方面&#xff0c;并提供具有一定难度的代码示…

深度学习的炼金术:转化数据为黄金的秘密

深度学习的炼金术&#xff1a;转化数据为黄金的秘密 1 引言 在现代深度学习的壮阔疆域中&#xff0c;数据是王冠上耀眼的宝石&#xff0c;而性能优化则是锻造这顶王冠的炼金术。这份融合了数据和算法魔力的艺术&#xff0c;不仅仅依赖于强大的计算资源和复杂的网络结构&#x…

【蓝桥杯省赛真题40】python摘苹果 中小学青少年组蓝桥杯比赛 算法思维python编程省赛真题解析

目录 python摘苹果 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python摘苹果 第十三届蓝桥杯青少年组python编程省赛真题 一、题目要求 &…

【C语言】万字详讲操作符

目录 前言 一、操作符分类 二、算数操作符 三、移位操作符 四、位操作符 五、赋值操作符 六、单目操作符 6.1 逻辑反操作 6.2 负值与正值 6.3 取地址 6.4 sizeof 6.5 取反操作符 6.6 --和操作符 6.7 间接访问操作符&#xff08;解引用操作符&#xff09; 6.8 强…

QA | amfori QMI 审核常见问题解答

01amfori QMI 项目介绍 作为全球领先的贸易协会&#xff0c;amfori 致力于开放和可持续贸易。他们汇集了来自 40 多个国家的零售商、进口商、品牌和协会&#xff0c;目的是系统地监督和改善世界各地的供应商的工作条件。 amfori QMI 是一项针对致力于为生产现场的作业规范和质量…

level2行情+在线金融数据库

jvQuant&#xff1a;一站式金融量化服务平台 jvQuant作为一个领先的金融量化服务平台&#xff0c;为广大投资者和量化分析师提供了全面、高效、稳定的数据接入和量化分析服务。该平台涵盖了多个关键功能&#xff0c;包括交易接入、WebSocket行情接入、历史行情查询、在线数据库…

安装JAVA和java IDEA并汉化过程

1.安装java: 打开java的下载链接&#xff1a; Java Downloads | Oracle 然后选择对应的版本下载即可&#xff0c;我这里是windows 所以下载这个 然后正常一步步安装即可。 2.配置java环境&#xff1a; 在桌面右键此电脑然后点击属性——高级系统设置——环境变量——然后…

H5点击复制功能 兼容安卓、IOS

效果图 HTML代码 <div>链接&#xff1a;<span style"color: #FF8A21" click"CopyUrl" id"copyId"> https://blog.csdn.net/qq_51463650?spm1000.2115.3001.5343</span> </div>复制方法 const CopyUrl () > {let …

12.Blender 界面介绍(上)及物体基础编辑操作

设置语言 首先在菜单栏打开编辑-Preferences-界面-翻译&#xff0c;可以修改语言 这里使用的是Steam上下载的4.1版本 工具栏 左边的工具栏&#xff0c;按T就会出现&#xff0c;再按T就会隐藏 右边的工具栏是按N&#xff0c;按N显示&#xff0c;再按N隐藏 旋转画面 长按鼠…

微信小程序监听App中的globalData——全局数据监听

微信小程序监听App中的globalData——全局数据监听 定义数据定义监听方法注册监听方法修改监听的数据扩展 需求&#xff1a;微信小程序项目需要全局监听某个数据。 方法&#xff1a;在 app.ts/app.js 中定义 globalData 公共数据&#xff0c;然后定义一个监听方法 watch&…

CSS 标准流 浮动 Flex布局

目录 1. 标准流2. 浮动2.1 清除浮动 3. Flex 布局3.1 Flex 组成3.2 Flex 布局 - 主轴与侧轴对齐方式3.2.1 主轴对齐方式3.2.2 侧轴对齐方式 3.3 Flex 布局 - 修改主轴方向3.4 Flex 布局 - 弹性伸缩比3.5 Flex 布局 - 弹性盒子换行3.6 Flex 布局 - 行对齐方式 1. 标准流 标准流…