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.pswp.cn/diannao/44335.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44335.shtml
英文地址,請注明出處:http://en.pswp.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…