Mysql事物阻塞的實現(xiàn)
阻塞因為不同鎖之間的兼容性關(guān)系,在有些時刻一個事務中的鎖需要等待另一個事務中的鎖釋放它所占用的資源,這就是阻塞。
阻塞并不是一件壞事,其是為了確保事務可以并發(fā)且正常地運行。在InnoDB存儲引擎中,參數(shù)innodb_lock_wait_timeout用來控制等待的時間(默認是50秒),innodb_rollback_on_timeout用來設定是否在等待超時時對進行中的事務進行回滾操作(默認是OFF,代表不回滾)。參數(shù)innodb_lock_wait_timeout是動態(tài)的,可以在MySQL數(shù)據(jù)庫運行時進行調(diào)整而innodb_rollback_on_timeout是靜態(tài)的,不可在啟動時進行修改,當發(fā)生超時,MySQL數(shù)據(jù)庫會拋出一個1205的錯誤,需要牢記的是,在默認情況下InnoDB存儲引擎不會回滾超時引發(fā)的錯誤異常。其實InnoDB存儲引擎在大部分情況下都不會對異常進行回滾。
1、查看現(xiàn)有事物(鎖),批量生成 kill 命令
select CONCAT('kill ', trx_mysql_thread_id, ';') as kill_command, a.* from information_schema.innodb_trx as a -- where trx_query is null
2、查看指定數(shù)據(jù)庫的線程,及其對應的事物(鎖),批量生成 kill 命令
select CONCAT('kill ', trx_mysql_thread_id, ';') as kill_command, a.*, b.* from information_schema.processlist as a left join information_schema.innodb_trx as b -- join information_schema.innodb_trx as b on a.id = b.trx_mysql_thread_id where a.db = 'my_db' -- and b.trx_query is null
3、查看事務超時時間
SHOW VARIABLES LIKE 'innodb_lock_wait_timeout';
lock_wait_timeout 是一個服務器級別的參數(shù),它用于設置所有連接在等待行級鎖或表級鎖時可以等待的最大時間。當連接等待的時間超過了 lock_wait_timeout 的值時,MySQL 將拋出一個錯誤,并終止連接。默認值為 31536000 秒(即一年)。
innodb_lock_wait_timeout 是一個存儲引擎級別的參數(shù),它僅用于設置使用 InnoDB 存儲引擎的連接在等待行級鎖或表級鎖時可以等待的最大時間。當連接等待的時間超過了 innodb_lock_wait_timeout 的值時,InnoDB 將拋出一個錯誤,并終止連接。默認值為 50 秒。
建議將 innodb_lock_wait_timeout 的值設置得比較小,因為這可以有效避免因等待鎖而導致的超時問題。但是,也要注意不要設置得過小,以免在高并發(fā)的情況下出現(xiàn)頻繁的超時錯誤。
到此這篇關(guān)于Mysql事物阻塞的實現(xiàn)的文章就介紹到這了,更多相關(guān)Mysql事物阻塞內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL中CAST()實例之轉(zhuǎn)換數(shù)據(jù)類型
CAST函數(shù)用于將某種數(shù)據(jù)類型的表達式顯式轉(zhuǎn)換為另一種數(shù)據(jù)類型,下面這篇文章主要給大家介紹了關(guān)于SQL中CAST()實例之轉(zhuǎn)換數(shù)據(jù)類型的相關(guān)資料,需要的朋友可以參考下2023-01-01淺談Mysql insert on duplicate key 死鎖問
本文介紹了在并發(fā)場景下的 insert on duplicate key update sql 出現(xiàn)的死鎖,經(jīng)過分析發(fā)現(xiàn)這種sql確實比較容易造成死鎖,這篇文章就從分析死鎖展開,到最終如何解決這樣的問題 分享相應的思路,感興趣的可以了解一下2022-05-05Mysql支持的數(shù)據(jù)類型(列類型總結(jié))
MySQL支持大量的列類型,它可以被分為3類:數(shù)字類型、日期和時間類型以及字符串(字符)類型。本節(jié)首先給出可用類型的一個概述,并且總結(jié)每個列類型的存儲需求,然后提供每個類中的類型性質(zhì)的更詳細的描述2016-12-12MySQL數(shù)據(jù)庫運維之數(shù)據(jù)恢復的方法
本篇文章主要介紹了MySQL數(shù)據(jù)庫運維之數(shù)據(jù)恢復的方法,此處總結(jié)一下恢復方案,并結(jié)合數(shù)據(jù)庫的二進制日志做下數(shù)據(jù)恢復的示范。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06