python - 如何剖析 Python 数据库代码

标签 python postgresql python-2.7 profiling psql

我有一个小型 Python 项目(约 5000 行),它使用 pg 对中型 Postgres 数据库表(约 5000 万个条目)运行某些繁重的统计计算。图书馆。

统计计算的性质意味着代码需要一段时间才能运行,我想分析代码的 Python 和 PSQL 端。我尝试了我的首选 Python 分析器 ( cProfile ),但它似乎对 PSQL 端视而不见。

我怎样才能在我的系统中同时分析 Python 和 PSQL?

最佳答案

基本上,你不能。

可以测量 PostgreSQL 查询中的性能和执行计划,但我什至无法想象您如何将其与命令式编程语言的配置文件集成。您可以将生成相同查询的 Perl 完全替换为 Python,并且它不会对 PostgreSQL 产生任何盲目的差异。

所以 - 有两个有趣的问题需要回答。首先,哪些查询占用了您所有的时间?其次,查询规划器做得好吗?

首先,有许多日志文件处理器可以为您构建统计信息,但我推荐 pg_stat_statements扩大。让它继续运行,它将计算您运行不同查询的次数以及它们花费的时间。

对于第二个,您需要检查通过 EXPLAIN 生成的查询计划看看你是否需要改变可用的索引,或者可能是查询本身。这里的话题太大了,但是 wiki是一个很好的起点。有一个很棒的online tool也有助于说明查询计划。

关于python - 如何剖析 Python 数据库代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25495729/

相关文章:

python - 如何使用日期时间计算持续时间和停止时间?

Python:暂停函数但不是整个程序

python - Python 的 C 预处理器宏等效项

oracle - SYS_CONNECT_BY_PATH 和 START WITH/CONNECT BY PostgreSQL 等效项

sql - Postgres 中为一行存储一堆任意 bool 值的最佳方法是什么?

postgresql - 填充表时出现多行错误

python - 需要帮助让 CLisp 将标准输入读入列表

python - 无法使用 BeautifulSoup 从标签中提取文本

python - 如何从配置文件配置 flask app.logger?

python - 如何修复以下代码?