Flask SQL性能测试:使用flask-sqlalchemy检测慢SQL语句
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask SQL性能测试:使用flask-sqlalchemy检测慢SQL语句相关的知识,希望对你有一定的参考价值。
参考技术A摘要: Flask , flask-sqlalchemy , SQL
flask-sqlalchemy 可以记录下在客户端请求应用的过程中,后台涉及的SQL语句,以及SQL语句执行的时长,主要基于flask-sqlalchemy下的 get_debug_queries 实现。在主视图脚本中加入一个 after_request 视图如下。
其中开启SQL Debug模式 app.config[\'SQLALCHEMY_RECORD_QUERIES\'] = True , get_debug_queries 返回请求涉及的所有SQL语句,调用 duration 获得SQL执行时长,只要大于0.2就用logging模块记录到磁盘。
启动程序,点击应用功能,logging会把大于时间阈值的SQL写入本地文件query_log.log
直接搜索Slow query,得到以下几条记录
三张表pira_ent_alias,pira_score,pira_senti_stats都是简单的filter查询,没有复杂的逻辑,查看mysql explain执行计划
explain结果解析
增加索引
三张表都进行了全表扫描,先加上索引再说,给pira_ent_alias增加ent_name和ent_shortname的普通索引
给pira_score,pira_senti_stats增加ent_name和datetime的复合索引,复合索引从字段组合的 最左边开始就要走 ,否则无效,因此如果filter条件只有datetime还是全表扫描,filter条件是ent_name或者ent_name和datetime有效。
给三张表增加索引之后,再次运行get_debug_queries,阈值降低为0,查看日志如下,执行时间都有很大降低
以上是关于Flask SQL性能测试:使用flask-sqlalchemy检测慢SQL语句的主要内容,如果未能解决你的问题,请参考以下文章