欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

涉及知識點

  • mysql慢查詢會話查詢
  • schedule定時任務調(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í)行檢查任務
 schedule.every(5).seconds.do(kill_slow)
 #此處固定寫法,意思是每秒鐘schedule看下是否有pending的任務,有就執(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點30分
schedule.every().day.at("10:30").do(job)
while True:
 schedule.run_pending()
 time.sleep(1)

pymysql使用

# 連接數(shù)據(jù)庫,設置結(jié)果集用dict返回,autocommit自動提交事務
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ù)庫,設置結(jié)果集用dict返回,autocommit自動提交事務
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í)行檢查任務
  schedule.every(5).seconds.do(kill_slow)
  # 此處固定寫法,意思是每秒鐘schedule看下是否有pending的任務,有就執(zhí)行
  while True:
    schedule.run_pending()
    time.sleep(1)

總結(jié)

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

相關文章

  • Python 實現(xiàn)集合Set的示例

    Python 實現(xiàn)集合Set的示例

    這篇文章主要介紹了Python 實現(xiàn)集合Set的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • python實現(xiàn)的按要求生成手機號功能示例

    python實現(xiàn)的按要求生成手機號功能示例

    這篇文章主要介紹了python實現(xiàn)的按要求生成手機號功能,涉及Python流程控制、隨機數(shù)操作及數(shù)學運算相關實現(xiàn)技巧,需要的朋友可以參考下
    2019-10-10
  • 將Django框架和遺留的Web應用集成的方法

    將Django框架和遺留的Web應用集成的方法

    這篇文章主要介紹了將Django框架和遺留的Web應用集成的方法,Django是Python百花齊放的web開發(fā)框架中人氣最高的一個,需要的朋友可以參考下
    2015-07-07
  • Python實現(xiàn)簡易端口掃描器代碼實例

    Python實現(xiàn)簡易端口掃描器代碼實例

    本篇文章主要介紹了Python實現(xiàn)簡易端口掃描器的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Python 代碼在函數(shù)中運行得更快的原因解析

    Python 代碼在函數(shù)中運行得更快的原因解析

    我們知道,python 是一種解釋型語言,它會逐行讀取并執(zhí)行代碼,小伙伴們可能會有這個疑問:為什么在函數(shù)中運行的 Python 代碼速度更快,今天這篇文章將會解答大家心中的疑惑
    2023-09-09
  • 淺談pytorch中的dropout的概率p

    淺談pytorch中的dropout的概率p

    這篇文章主要介紹了淺談pytorch中的dropout的概率p,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • python中xml格式的轉(zhuǎn)換方法

    python中xml格式的轉(zhuǎn)換方法

    這篇文章主要為大家詳細介紹了python中xml格式的轉(zhuǎn)換方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 如何利用Python給自己的頭像加一個小國旗(小月餅)

    如何利用Python給自己的頭像加一個小國旗(小月餅)

    這篇文章主要給大家介紹了關于如何利用Python給自己的頭像加一個小國旗(小月餅)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • Python實現(xiàn)爬取知乎神回復簡單爬蟲代碼分享

    Python實現(xiàn)爬取知乎神回復簡單爬蟲代碼分享

    這篇文章主要介紹了Python實現(xiàn)爬取知乎神回復簡單爬蟲代碼分享,本文實現(xiàn)了爬取知乎的“如何正確地吐槽”收藏夾,是對個人的一個興趣實現(xiàn),需要的朋友可以參考下
    2015-01-01
  • django實現(xiàn)支付寶支付實例講解

    django實現(xiàn)支付寶支付實例講解

    在本篇文章里小編給大家整理的是一篇關于django支付寶支付的代碼實例內(nèi)容,需要的朋友們可以學習下。
    2019-10-10

最新評論