最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python自動結(jié)束mysql慢查詢會話的實例代碼

 更新時間:2019年10月27日 14:23:47   作者:微微  
這篇文章主要介紹了python自動結(jié)束mysql慢查詢會話,主要涉及到了mysql慢查詢會話查詢,定時任務(wù)的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

生產(chǎn)環(huán)境的有些sql查詢寫得太復(fù)雜,或是表很大,對應(yīng)索引未建立或建立不合理,或是查詢未充分使用索引等,就有可能出現(xiàn)慢查詢,一些慢查詢需要修改程序,可能沒那么快能解決,這時如果有個腳本能自動檢測符合條件的慢查詢會話并結(jié)束,那么是很方便的,當(dāng)然運(yùn)維人員也可順便弄個檢測慢查詢并告警的腳本。

涉及知識點(diǎn)

  • mysql慢查詢會話查詢
  • schedule定時任務(wù)調(diào)度
  • pymysql執(zhí)行sql

代碼分解

mysql慢查詢

#會話查詢,只能查詢所有會話,不能按條件過濾,不過比較好記
show PROCESSLIST;
#從information_schema中查詢會話,可以按條件過濾
SELECT
 *
FROM
 information_schema.`PROCESSLIST`;
#查詢符合條件的慢會話,id是會話ID,info是正在執(zhí)行的sql,time是會話持續(xù)時間,殺會話時注意要做好過濾
SELECT
 id,
 info,
 time
FROM
 information_schema.`PROCESSLIST`
WHERE
 info LIKE '%select * from table%'
AND time > 10;
#直接使用sql批量殺會話,拼接kill xxx;后,拷貝了在控制臺執(zhí)行
SELECT
 concat('KILL ', id, ';')
FROM
 information_schema.`PROCESSLIST`
WHERE
 info LIKE '%select * from table%'
AND time > 10;

腳本主入口

if __name__ == '__main__':
 #每5秒執(zhí)行檢查任務(wù)
 schedule.every(5).seconds.do(kill_slow)
 #此處固定寫法,意思是每秒鐘schedule看下是否有pending的任務(wù),有就執(zhí)行
 while True:
  schedule.run_pending()
  time.sleep(1)
schedule的其它示例
import schedule
import time
def job(message='stuff'):
 print("I'm working on:", message)
#每10分鐘
schedule.every(10).minutes.do(job)
#每小時
schedule.every().hour.do(job, message='things')
#每天10點(diǎn)30分
schedule.every().day.at("10:30").do(job)
while True:
 schedule.run_pending()
 time.sleep(1)

pymysql使用

# 連接數(shù)據(jù)庫,設(shè)置結(jié)果集用dict返回,autocommit自動提交事務(wù)
db = pymysql.connect(host='localhost', db='dbname',
      user='root', passwd='admin',
      port=3306, charset='utf8',
      cursorclass=pymysql.cursors.DictCursor, autocommit=True)
cursor = db.cursor()

查詢符合條件的慢會話并結(jié)束

def kill_slow():
  cursor.execute(
    """
    SELECT
      id,
      info,
      time
    FROM
      information_schema.`PROCESSLIST`
    WHERE
      info LIKE '%select * from table%'
    AND time > 10;
    """)
  slow_sessions = cursor.fetchall()
  for slow_session in slow_sessions:
    print("slow session detected, kill it:\n id:%s\nsql:%s" % (
      slow_session[0], slow_session[1]))
    cursor.execute("kill %s", slow_session[0])

完整代碼

import time
import pymysql
import schedule
# 連接數(shù)據(jù)庫,設(shè)置結(jié)果集用dict返回,autocommit自動提交事務(wù)
db = pymysql.connect(host='localhost', db='dbname',
           user='root', passwd='admin',
           port=3306, charset='utf8',
           cursorclass=pymysql.cursors.DictCursor, autocommit=True)
cursor = db.cursor()
def kill_slow():
  cursor.execute(
    """
    SELECT
      id,
      info,
      time
    FROM
      information_schema.`PROCESSLIST`
    WHERE
      info LIKE '%select * from table%'
    AND time > 10;
    """)
  slow_sessions = cursor.fetchall()
  for slow_session in slow_sessions:
    print("slow session detected, kill it:\n id:%s\nsql:%s" % (
      slow_session[0], slow_session[1]))
    cursor.execute("kill %s", slow_session[0])
if __name__ == '__main__':
  # 每5秒執(zhí)行檢查任務(wù)
  schedule.every(5).seconds.do(kill_slow)
  # 此處固定寫法,意思是每秒鐘schedule看下是否有pending的任務(wù),有就執(zhí)行
  while True:
    schedule.run_pending()
    time.sleep(1)

總結(jié)

以上所述是小編給大家介紹的python自動結(jié)束mysql慢查詢會話的實例代碼,希望對大家有所幫助!

相關(guān)文章

  • Python字符串的拆分與連接詳解

    Python字符串的拆分與連接詳解

    由于字符串?dāng)?shù)據(jù)幾乎無處不在,因此掌握有關(guān)字符串的交易工具非常重要。幸運(yùn)的是,Python 使字符串操作變得非常簡單,尤其是與其他語言甚至舊版本的 Python 相比時。本文將為大家詳細(xì)介紹Python中字符串的拆分與連接,需要的可以參考一下
    2021-12-12
  • Python實戰(zhàn)之MNIST手寫數(shù)字識別詳解

    Python實戰(zhàn)之MNIST手寫數(shù)字識別詳解

    MNIST數(shù)據(jù)集是機(jī)器學(xué)習(xí)領(lǐng)域中非常經(jīng)典的一個數(shù)據(jù)集,由60000個訓(xùn)練樣本和10000個測試樣本組成,每個樣本都是一張28 * 28像素的灰度手寫數(shù)字圖片。本文主要介紹了通過 MNIST實現(xiàn)手寫數(shù)字識別,需要的可以參考一下
    2022-01-01
  • Pycharm運(yùn)行加載文本出現(xiàn)錯誤的解決方法

    Pycharm運(yùn)行加載文本出現(xiàn)錯誤的解決方法

    今天小編就為大家分享一篇Pycharm運(yùn)行加載文本出現(xiàn)錯誤的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python控制Firefox方法總結(jié)

    Python控制Firefox方法總結(jié)

    在本文里我們給大家分享了關(guān)于如何用Python控制Firefox的知識點(diǎn)總結(jié),有此需要的朋友們可以參閱下。
    2019-06-06
  • python將字符串列表轉(zhuǎn)換為數(shù)值列表的幾種方法

    python將字符串列表轉(zhuǎn)換為數(shù)值列表的幾種方法

    這篇文章主要介紹了python將字符串列表轉(zhuǎn)換為數(shù)值列表的幾種方法,包括使用map()和float()/int()、列表推導(dǎo)式、pandas庫以及numpy庫,每種方法都有其適用場景,如小型列表、靈活轉(zhuǎn)換、處理復(fù)雜數(shù)據(jù)集和大規(guī)模數(shù)據(jù)計算等,需要的朋友可以參考下
    2025-04-04
  • python爬取豆瓣評論制作詞云代碼

    python爬取豆瓣評論制作詞云代碼

    大家好,本篇文章主要講的是python爬取豆瓣評論制作詞云代碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • pygame實現(xiàn)時鐘效果

    pygame實現(xiàn)時鐘效果

    這篇文章主要為大家詳細(xì)介紹了pygame實現(xiàn)時鐘效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • python讀取txt文件,去掉空格計算每行長度的方法

    python讀取txt文件,去掉空格計算每行長度的方法

    今天小編就為大家分享一篇python讀取txt文件,去掉空格計算每行長度的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python 算法題——快樂數(shù)的多種解法

    python 算法題——快樂數(shù)的多種解法

    看書,看視頻都可以幫助你學(xué)習(xí)代碼,但都只是輔助作用,學(xué)好 Python,最重要的還是 多敲代碼,多刷題。本文講述算法題快樂數(shù)的多種解法,幫你打開思路
    2021-05-05
  • conda創(chuàng)建pytorch環(huán)境報錯

    conda創(chuàng)建pytorch環(huán)境報錯

    這篇文章主要介紹了conda創(chuàng)建pytorch環(huán)境報錯,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04

最新評論

威海市| 湘潭县| 眉山市| 蓬溪县| 甘南县| 北川| 九寨沟县| 潜江市| 龙川县| 武汉市| 抚顺县| 大兴区| 云阳县| 黎川县| 韩城市| 洛阳市| 荔浦县| 邢台市| 开封县| 长垣县| 于都县| 广安市| 江城| 东阳市| 锦屏县| 谢通门县| 中阳县| 辛集市| 桐城市| 上栗县| 饶河县| 绥宁县| 金寨县| 秀山| 东至县| 错那县| 丹阳市| 斗六市| 边坝县| 寻乌县| 焦作市|