mysql鎖表問題的解決方法_MYSQL鎖表問題的解決方法

本文實例講述了MYSQL鎖表問題的解決方法。分享給大家供大家參考,具體如下:

很多時候!一不小心就鎖表!這里講解決鎖表終極方法!

案例一

mysql>show processlist;

參看sql語句

一般少的話

mysql>kill thread_id;

就可以解決了

kill掉第一個鎖表的進程, 依然沒有改善. 既然不改善, 咱們就想辦法將所有鎖表的進程kill掉吧, 簡單的腳本如下.

#!/bin/bash

mysql - u root - e " show processlist " | grep - i " Locked " >> locked_log . txt

for line in ` cat locked_log.txt | awk '{print $1 }' `

do

echo " kill $line ; " >> kill_thread_id . sql

done

現在kill_thread_id.sql的內容像這個樣子

kill 66402982 ;

kill 66402983 ;

kill 66402986 ;

kill 66402991 ;

.....

好了, 我們在mysql的shell中執行, 就可以把所有鎖表的進程殺死了.

mysql > source kill_thread_id . sql

當然了, 也可以一行搞定

for id in `mysqladmin processlist | grep -i locked | awk '{print $1}'`

do

mysqladmin kill ${id}

done

案例二

如果大批量的操作能夠通過一系列的select語句產生,那么理論上就能對這些結果批量處理。

但是mysql并沒用提供eval這樣的對結果集進行分析操作的功能。所以只能現將select結果保存到臨時文件中,然后再執行臨時文件中的指令。

具體過程如下:

mysql> SELECT concat('KILL ',id,';') FROM information_schema.processlist WHERE user='root';

+------------------------+

| concat('KILL ',id,';')

+------------------------+

| KILL 3101;

| KILL 2946;

+------------------------+

2 rows IN SET (0.00 sec)

mysql> SELECT concat('KILL ',id,';') FROM information_schema.processlist WHERE user='root' INTO OUTFILE '/tmp/a.txt';

Query OK, 2 rows affected (0.00 sec)

mysql> source /tmp/a.txt;

Query OK, 0 rows affected (0.00 sec)

案例三

MySQL + PHP的模式在大并發壓力下經常會導致MySQL中存在大量僵死進程,導致服務掛死。為了自動干掉這些進程,弄了個腳本,放在服務器后臺通過crontab自動執行。發現這樣做了以后,的確很好的緩解了這個問題。把這個腳本發出來和大家Share.

根據自己的實際需要,做了一些修改:

SHELL腳本:mysqld_kill_sleep.sh

#!/bin/sh

mysql_pwd="root的密碼"

mysqladmin_exec="/usr/local/bin/mysqladmin"

mysql_exec="/usr/local/bin/mysql"

mysql_timeout_dir="/tmp"

mysql_timeout_log="$mysql_timeout_dir/mysql_timeout.log"

mysql_kill_timeout_sh="$mysql_timeout_dir/mysql_kill_timeout.sh"

mysql_kill_timeout_log="$mysql_timeout_dir/mysql_kill_timeout.log"

$mysqladmin_exec -uroot -p"$mysql_pwd" processlist | awk '{ print $12 , $2 ,$4}' | grep -v Time | grep -v '|' | sort -rn > $mysql_timeout_log

awk '{if($1>30 && $3!="root") print "'""$mysql_exec""' -e " "\"" "kill",$2 "\"" " -uroot " "-p""\"""'""$mysql_pwd""'""\"" ";" }' $mysql_timeout_log > $mysql_kill_timeout_sh

echo "check start ...." >> $mysql_kill_timeout_log

echo `date` >> $mysql_kill_timeout_log

cat $mysql_kill_timeout_sh

把這個寫到mysqld_kill_sleep.sh。然后chmod 0 mysqld_kill_sleep.sh,chmod u+rx mysqld_kill_sleep.sh,然后用root賬戶到cron里面運行即可,時間自己調整。

執行之后顯示:

www# ./mysqld_kill_sleep.sh

/usr/local/bin/mysql -e "kill 27549" -uroot -p"mysql root的密碼";

/usr/local/bin/mysql -e "kill 27750" -uroot -p"mysql root的密碼";

/usr/local/bin/mysql -e "kill 27840" -uroot -p"mysql root的密碼";

/usr/local/bin/mysql -e "kill 27867" -uroot -p"mysql root的密碼";

/usr/local/bin/mysql -e "kill 27899" -uroot -p"mysql root的密碼";

/usr/local/bin/mysql -e "kill 27901" -uroot -p"mysql root的密碼";

/usr/local/bin/mysql -e "kill 27758" -uroot -p"mysql root的密碼";

/usr/local/bin/mysql -e "kill 27875" -uroot -p"mysql root的密碼";

/usr/local/bin/mysql -e "kill 27697" -uroot -p"mysql root的密碼";

/usr/local/bin/mysql -e "kill 27888" -uroot -p"mysql root的密碼";

/usr/local/bin/mysql -e "kill 27861" -uroot -p"mysql root的密碼";

如果確認沒有問題了,把最后的cat修改為sh即可。

本人改寫了下上面的腳本:

#!/bin/bash

mysql_pwd="密碼"

mysql_exec="/usr/local/mysql/bin/mysql"

mysql_timeout_dir="/tmp"

mysql_kill_timeout_sh="$mysql_timeout_dir/mysql_kill_timeout.sh"

mysql_kill_timeout_log="$mysql_timeout_dir/mysql_kill_timeout.log"

$mysql_exec -uroot -p$mysql_pwd -e "show processlist" | grep -i "Locked" >> $mysql_kill_timeout_log

chmod 777 $mysql_kill_timeout_log

for line in `$mysql_kill_timeout_log | awk '{print $1}'`

do

echo "$mysql_exec -uroot -p$mysql_pwd -e \"kill $line\"" >> $mysql_kill_timeout_sh

done

chmod 777 $mysql_kill_timeout_sh

cat $mysql_kill_timeout_sh

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372321.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372321.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372321.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux——(1)初識linux

linux有窗口管理員環境和純文本界面環境,同時linux默認提供6個Terminal來讓用戶登錄。crtlaltF1-6可自由切換。其中如果窗口管理員環境處于運行狀態,那么可以按crtlaltF7直接切過去。 常用命令: cd [dir] #進入dir目錄下 ls #列出當前目錄下的…

4.26學習成果

哇,今天終于開始接觸Web了,感覺有點小興奮,這幾天看來那個視頻感覺挺有趣的,挺奇妙的。看到人家敲代碼,感覺好厲害。但是感覺不懂,所以,要努力學習了。 今天的學習成果: 網頁由什么組…

將Glassfish 3連接到外部ActiveMQ 5代理

介紹 在ONVZ,我們將Glassfish 3用作開發和生產應用服務器,我們對其性能和穩定性以及周圍的廣大社區感到非常滿意。 我很少遇到在stackoverflow或java.net上沒有匹配解決方案的問題。 作為我們開源策略的一部分,我們還運行了一個定制的ActiveM…

esp8266 lcd 天氣_ESP8266 顯示實時天氣信息

代碼文件getdata.h#include #include #include #include #include #include #include #define DEBUG 1#define MAX_CONTENT_SIZE 2000const char* ssid "weather";const char* password "mymymymy";WiFiClient client;HTTPClient http;char response[MAX…

【VS開發】visual studio 2015的NuGet Manager解決方案管理功能

NuGet的官方說明是:NuGet是一款Visual Studio的擴展,它可以簡單的安裝、升級開源庫和工具。 官網地址:http://www.nuget.org/ 官網最醒目的位置就是下載鏈接,安裝完成后我們來快速體驗一把。 手上有個小項目需要使用到json格式&am…

五. 面向對象高級特性4. 接口的概念和使用

在抽象類中,可以包含一個或多個抽象方法;但在接口(interface)中,所有的方法必須都是抽象的,不能有方法體,它比抽象類更加“抽象”。接口使用 interface 關鍵字來聲明,可以看做是一種特殊的抽象類&#xff0…

智能配料

我們都有多少次聽說“分批處理”會增加延遲? 作為對低延遲系統充滿熱情的人,這讓我感到驚訝。 以我的經驗,正確完成批處理不僅可以提高吞吐量,還可以減少平均延遲并保持一致。 那么,批處理如何神奇地減少延遲呢&#x…

mysql從myisam_將MySQL從MyISAM轉換成InnoDB錯誤和解決辦法

原來自己用的是為了裝的, 所以在設置database usage(如下圖1)的時候按照discuz官方的建議,選的都是Non-Transactional Database Only(只支持MyISAM數據引擎的非事務數據庫),用MyISAM數據庫,還沒涉及到需要InnoDB,因此打…

相似性度量中用到的一些距離函數

本文目錄 1. 歐氏距離 2. 曼哈頓距離 3. 切比雪夫距離 4. 閔可夫斯基距離 5. 標準化歐氏距離 6. 馬氏距離 7. 漢明距離 8. 杰卡德距離 & 杰卡德相似系數 9. 相關系數 & 相關距離 10. 信息熵 1. 歐氏距離(Euclidean Distance) 歐氏距離是最易于理解的一種距離計算方法&a…

Spring 3.1配置文件和Tomcat配置

Spring 3.1引入了非常有用的功能,稱為配置文件 。 因此,它易于構建,可以在所有環境(開發,測試,生產等)中部署的軟件包。 通過定義系統屬性spring.profiles.active, Spring允許我們使…

計算1~n之間所有奇數之和_所有奇數長度子數組的和

所有奇數長度子數組的和題目:給你一個正整數數組 arr ,請你計算所有可能的奇數長度子數組的和。子數組 定義為原數組中的一個連續子序列。請你返回 arr 中 所有奇數長度子數組的和 。示例 1:輸入:arr [1,4,2,5,3]輸出&#xff1a…

MYSQL AND OR的聯用

MYSQL AND OR的聯用 MYSQL中”AND”和”OR”都是條件控制符。”AND”是求交集,而”OR”則是求并集,非常多情況下,須要聯用它們兩個。下面是兩張表,我僅僅列出實用的字段。 Table:student_score 學生成績 sid(學生ID) cid(課程ID) score(分數)…

九度oj 題目1456:勝利大逃亡

題目描述:Ignatius被魔王抓走了,有一天魔王出差去了,這可是Ignatius逃亡的好機會.魔王住在一個城堡里,城堡是一個A*B*C的立方體,可以被表示成A個B*C的矩陣,剛開始Ignatius被關在(0,0,0)的位置,離開城堡的門在(A-1,B-1,C-1)的位置,現在知道魔王將在T分鐘后回到城堡,I…

JMX:一些入門說明

JMX(Java管理擴展)是一種J2SE技術,可以管理和監視Java應用程序。 基本思想是實現一組管理對象,并將實現注冊到平臺服務器,在平臺服務器上,可以使用一組連接器或適配器從本地或遠程調用這些實現到JVM。 一個…

解釋java程序中的異常機制_Java編程中的異常機制

本文旨在以初學者的角度來學習Java異常的知識,盡量簡單,一些細枝末節的知識不會講述,但不影響對知識的掌握。(比如try-catch可以嵌套,不太會這么用)1.什么是異常我們先舉個例子int x 10/0;在IDE里輸入這樣…

keras做多層神經網絡

一、 背景與目的 背景:配置好了theano,弄了gpu, 要學dnn方法。 目的:本篇學習keras基本用法, 學習怎么用keras寫mlp,學keras搞文本的基本要點。 二、 準備 工具包: theano、numpy、keras等工具包…

配置環境變量

由于寫了一個關于生成簽名需要配置環境變量,所以在這里順便把配置環境變量的步驟說一下 1.右鍵點擊計算機,然后點擊高級系統設置 2.點擊環境變量,下方出現的即為系統變量,雙擊path就能直接修改, 轉載于:https://www.cn…

使用JavaFX AnimationTimer

回想一下,給AnimationTimer起個名字可能不是一個好主意,因為它不僅可以用于動畫,還可以用于測量:fps速率,碰撞檢測,模擬步驟,游戲主循環等實際上,大部分時間我都看到了AnimationTime…

python列表姓氏_python數據分析實例(六) 中國姓氏數據

bokeh聯動柱狀圖,Excel空間柱狀圖、空間熱力圖,Echarts空間柱狀圖,常用函數:df[工作地_省] df[工作地].str.split(省).str[0]df[工作地_市] df[工作地_市] df[工作地].str.split(省).str[1].str.split(市).str[0]df[工作地_市][…

JavaFX 2 GameTutorial第3部分

介紹 ?他是與一個六個部分組成的系列的第3部分的JavaFX 2游戲教程。 如果您錯過了第1部分和第2部分 ,建議您在開始本教程之前先進行閱讀。 回顧第二部分,我討論了游戲循環的內部工作原理,其中我們使用動畫(JavaFX Timeline &…