MySQL數(shù)據(jù)庫執(zhí)行Update卡死問題的解決方法
執(zhí)行數(shù)據(jù)庫更新update操作的時(shí)候數(shù)據(jù)庫卡死了
問題分析
一般都是數(shù)據(jù)庫事務(wù)未提交,導(dǎo)致update或者delete卡死。
解決辦法
- 在執(zhí)行完更新或刪除后,記得將事務(wù)提交commit;
- 找到數(shù)據(jù)庫客戶端,執(zhí)行commit操作。
如果還不行。 那么應(yīng)該是數(shù)據(jù)庫在執(zhí)行數(shù)據(jù)操作失敗 or 事務(wù)未提交 之后,將需要執(zhí)行的sql語句鎖死了。
過程復(fù)現(xiàn)和解決
通過如下命令查看數(shù)據(jù)庫的自動(dòng)提交狀態(tài)
show variables like 'autocommit';
通過SQL設(shè)置數(shù)據(jù)庫自動(dòng)自動(dòng)提交為關(guān)閉
-- on為開啟,off為關(guān)閉 set autocommit=off; -- 或者1為開啟,0為關(guān)閉 set autocommit=0;
表中數(shù)據(jù)如下:
打開兩個(gè)窗口分別執(zhí)行update操作
update car set color ='銀色' where id = 1; update car set color ='紅色' where id = 1;
查詢正在執(zhí)行的事務(wù):
SELECT * FROM information_schema.INNODB_TRX;
根據(jù)圖中事務(wù)的線程ID(trx_mysql_thread_id)可以看出對(duì)應(yīng)的mysql 線程:一個(gè)1084 (update正在等待鎖)另一個(gè)是1089(update 正在執(zhí)行 沒有提交事務(wù))
可以使用mysql命令殺掉線程:kill 線程id
kill 1089;
期間如果并未殺掉持有鎖的線程:則第二個(gè)update語句會(huì)提示等待鎖超時(shí)。
相關(guān)命令:
-- 查看正在鎖的事務(wù) SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; -- 查看等待鎖的事務(wù) SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS; -- 查詢mysql數(shù)據(jù)庫中存在的進(jìn)程 select * from information_schema.`PROCESSLIST`(show processlist;)
擴(kuò)展
oracle的操作方式:
查詢鎖定記錄
SELECT s.sid, s.serial# FROM v$locked_object lo, dba_objects ao, v$session s WHERE ao.object_id = lo.object_id AND lo.session_id = s.sid;
刪除鎖定記錄
ALTER system KILL session 'SID,serial#';
總結(jié)
到此這篇關(guān)于MySQL數(shù)據(jù)庫執(zhí)行Update卡死問題解決的文章就介紹到這了,更多相關(guān)MySQL執(zhí)行Update卡死內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql Community Server 5.7.19安裝指南(詳細(xì))
這篇文章主要介紹了mysql Community Server 5.7.19安裝指南(詳細(xì)),需要的朋友可以參考下2017-10-10Mysql優(yōu)化之Zabbix分區(qū)優(yōu)化
這篇文章主要介紹了Mysql優(yōu)化中Zabbix分區(qū)優(yōu)化的詳細(xì)方法和優(yōu)缺點(diǎn)分析,一起學(xué)習(xí)下。2017-11-11mysql不能啟動(dòng)報(bào)error2013錯(cuò)誤的多種解決方案
這篇文章主要介紹了mysql不能啟動(dòng)報(bào)error2013錯(cuò)誤的多種解決方案,需要的朋友可以參考下2014-07-07Mysql LONGTEXT 類型存儲(chǔ)大文件(二進(jìn)制也可以) (修改+調(diào)試+整理)
MySql2.cpp : Defines the entry point for the console application.2009-07-07MySQL對(duì)數(shù)據(jù)庫數(shù)據(jù)進(jìn)行復(fù)制的基本過程詳解
這篇文章主要介紹了MySQL對(duì)數(shù)據(jù)庫數(shù)據(jù)進(jìn)行復(fù)制的基本過程,解讀了Slave的一些相關(guān)配置,需要的朋友可以參考下2015-11-11