MySQL数据库中利用定时作业去杀死长时查询以防止数据库死锁风险

MySQL数据库中没有SQLServer数据库中那种传统的定时作业的概念。但是提供了一种【事件】的东西,基本和定时作业貌离神合。

下面我们在MySQL中创建一个事件它的作用是去监测时间很长的异常查询,并且去主动杀掉该线程以防止数据库发生死锁的风险

-- 开启事件调度器,以便能够运行周期性的事件
SET GLOBAL event_scheduler = ON;CREATE EVENT IF NOT EXISTS kill_long_running_queries
-- 设置事件调度,这里设置为每10秒执行一次
ON SCHEDULE EVERY 10 SECOND
-- 定义事件要执行的SQL代码块
DOBEGIN-- 声明一个变量`done`用于控制循环的结束,默认为FALSEDECLARE done INT DEFAULT FALSE;-- 声明一个变量`course_id`用于存储查询的进程IDDECLARE course_id INT;-- 创建一个游标`cur1`,用于遍历查询超过10分钟的查询进程DECLARE cur1 CURSOR FOR SELECT id FROM information_schema.PROCESSLIST WHERE COMMAND = 'Query' AND TIME > 300;-- 当游标遍历完成后,设置`done`为TRUE以退出循环DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;-- 打开游标OPEN cur1;-- 开始循环遍历游标中的结果read_loop: LOOP-- 从游标中获取下一行数据到变量`course_id`FETCH cur1 INTO course_id;-- 如果游标遍历完成,则退出循环IF done THENLEAVE read_loop;END IF;-- 杀掉进程ID为`course_id`的查询KILL course_id;END LOOP;-- 关闭游标CLOSE cur1;END;

以上仅是查询了当前数据库中的所有异常进程(或线程),要做完善的话还可以查询异常的事务并且杀掉。即SELECT * FROM information_schema.INNODB_TRX。等日后有空闲时间我会去完善。

下面是查询当前数据库中有哪些【事件

SHOW EVENTS;

以上就是我为解决MySQL数据库死锁而出的解决方案以及方案的落地。大家有什么好的方案可以提出来在评论区交流。可以是从数据库为出发点的方案,也可以是以代码请求为出发点的方案。

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

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

相关文章

探索Perl的自动清洁工:垃圾收集机制全解析

🧹 探索Perl的自动清洁工:垃圾收集机制全解析 Perl是一种高级编程语言,以其强大的文本处理能力而闻名。在Perl中,内存管理对于开发高效且稳定的应用程序至关重要。Perl提供了自动垃圾收集机制,帮助开发者管理内存&…

关于原型和原型链的学习和实践

在前端面试中,原型和原型链始终是一个避不开的问题,今天就弄明白! 原型和原型链 对象的创建方式工厂模式构造函数模式原型模式 原型和原型链实践 对象的创建方式 原型和原型链都是关于对象的内容,先来看一下JavaScript中对象的构建方式。 工…

代码随想录(day3)有序数组的平方

暴力求解法: 注意:需要确定范围,比如nums.sort()是在for循环之外,根据函数的功能来确定 return返回的是nums,而不是nums[i]因为返回的是整个数组 class Solution(object):def sortedSquares(self, nums):for i in r…

人话学Python-基础篇-数字计算

一:数字类型 对于最常见的数据类型,数字在Python中分为三类: 整型(int) 表示的是整数类型的所有数字,包括正整数,负整数和0。和C语言不同的是,Python中的int型没有范围的限制,理论上可以从无限小的整数取到…

RedHat运维-Ansible自动化运维基础22-rhel-system-roles

1. system_roles的官方文档的位置是___________________________________; 2. system_roles的官方文档的位置是___________________________________; 3. system_roles的官方文档的位置是___________________________________; 4. 安装rhel-s…

react基础语法,模板语法,ui渲染,jsx,useState状态管理

创建一个react应用 这里使用create-react-app的脚手架构建项目(结构简洁,基于webpack-cli), npx create-react-app [项目名称] 使用其他脚手架构建项目可以参考:react框架,使用vite和nextjs构建react项目…

数学建模国赛入门指南

文章目录 认识数学建模及国赛认识数学建模什么是数学建模?数学建模比赛 国赛参赛规则、评奖原则如何评省、国奖评奖规则如何才能获奖 国赛赛题分类及选题技巧国赛赛题特点赛题分类 国赛历年题型及优秀论文数学建模分工技巧数模必备软件数模资料文献数据收集资料收集…

力扣题解(乘积为正数的最长子数组长度)

1567. 乘积为正数的最长子数组长度 已解答 中等 给你一个整数数组 nums ,请你求出乘积为正数的最长子数组的长度。 一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。 请你返回乘积为正数的最长子数组长度。 本题要求乘积为正数,而整…

白蛇插画:成都亚恒丰创教育科技有限公司

白蛇插画:古韵今风,情深意长 在浩瀚的艺术长河中,插画作为一种独特的艺术形式,以其生动形象的画面、丰富多彩的色彩和深邃悠远的意境,成都亚恒丰创教育科技有限公司深受人们喜爱。而“白蛇插画”,作为融合…

bug - while parsing file included at

bug 如下 找到这个对应文件tb_top.sv的对应行,发现是一个 include "inc_tb_tests_xxx.sv" 问题点:头文件,重复定义,那么 解决方法- 在被include的文件首尾加入 ifndef MY_TRANSACTION__SV define MY_TRANSACTION__SV …

GenAI 技术堆栈架构师指南 - 十种工具

这篇文章于 2024 年 6 月 3 日首次出现在 The New Stack 上。 我之前写过关于现代数据湖参考架构的文章,解决了每个企业面临的挑战——更多的数据、老化的Hadoop工具(特别是HDFS)以及对RESTful API(S3)和性能的更大需求…

《javascript语言精粹》学习笔记之函数特性

分析javascript javascript比较好的思想:函数、弱类型、动态对象、对象字面量表示法 不好的思想:基于全局变量的编程模型 函数 函数对象 函数就是对象,新创建的函数会连接到Function.prototype上,没和函数创建时附带有两个隐藏…

前端--第一个前端程序

第一个前端程序 第一步: 使用记事本,编写代码 在你的一个磁盘里面创建一个文件夹,名为前端,然后在里面新建一个记事本,在里面写如下代码,注意一定要使用英文,然后把后缀名称改为.html。 第二…

你明白C++中的多态吗?(暑假提升-多态专题)

内不欺己,外不欺人。———孔子 有趣的多态 1、前言2、概念3、多态定义与产生条件4、多态的重要组成成员-(虚函数)5、虚函数的重写(覆盖)6、辅助关键字override与final(了解即可)7、重载,重定义(隐藏),重写(覆盖)8、抽象类9、多态的原理9、1、…

PHP老照片修复文字识别图像去雾一键抠图微信小程序源码

🔍解锁复古魅力,微信小程序黑科技大揭秘!老照片修复&更多神奇功能等你来试! 📸 【老照片修复,时光倒流的美颜术】 你是否珍藏着一堆泛黄的老照片,却因岁月侵蚀而模糊不清?现在…

实验02 黑盒测试(组合测试、场景法)

1. 组合测试用例设计技术 指出等价类划分法和边界值分析法通常假设输入变量相互独立,但实际情况中变量间可能存在关联。全面测试:覆盖所有输入变量的所有可能组合,测试用例数量随输入变量的增加而指数增长。 全面测试需要对所有输入的各个取…

2008年上半年软件设计师【上午题】真题及答案

文章目录 2008年上半年软件设计师上午题--真题2008年上半年软件设计师上午题--答案 2008年上半年软件设计师上午题–真题 2008年上半年软件设计师上午题–答案

按模版批量生成定制合同

提出问题 一个仪器设备采购公司,商品合同采购需要按模版生成的固定的文件,模板是固定的,只是每次需要替换信息,然后打印出来寄给客户。 传统方法 如果手工来做这个事情,准备好数据之后,需要从Excel表格中…

Qt5 Ubuntu18 QStackedWidget

1、在实际项目开发过程遇到,如果通过UI插件的属性设置,通过对默认的两个页面进行提升需要切换操作的对象,如果该对象需要外部接口传入数据,实现界面信息的实时刷新,这样会失败,失败的原因很好理解&#xff…

Ubuntu安装Pytorch3d

查看对应版本的pytorch3d https://anaconda.org/pytorch3d/pytorch3d/files?page2下载后保存到服务器上安装 conda install pytorch3d-0.7.7-py310_cu118_pyt210.tar.bz2检查是否安装成功 python -c "from pytorch3d.io import load_ply" # Check for pytorch3d i…