我有一个小型 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/