背景
生产环境的有些sql查询写得太复杂,或是表很大,对应索引未建立或建立不合理,或是查询未充分使用索引等,就有可能出现慢查询,一些慢查询需要修改程序,可能没那么快能解决,这时如果有个脚本能自动检测符合条件的慢查询会话并结束,那么是很方便的,当然运维人员也可顺便弄个检测慢查询并告警的脚本。
涉及知识点
- mysql慢查询会话查询
- schedule定时任务调度
- pymysql执行sql
代码分解
mysql慢查询
1 | #会话查询,只能查询所有会话,不能按条件过滤,不过比较好记 |
脚本主入口
1 | if __name__ == '__main__': |
schedule的其它示例
1 | import schedule |
pymysql使用
1 | # 连接数据库,设置结果集用dict返回,autocommit自动提交事务 |
查询符合条件的慢会话并结束
1 | def kill_slow(): |
完整代码
1 | import time |