Boz*_*Joe 74 postgresql profiler
我需要查看提交给PostgreSQL服务器的查询.通常我会使用SQL Server探查器在SQL Server域中执行此操作,但我还没有找到如何在PostgreSQL中执行此操作.似乎有相当多的付费工具,我希望有一个开源变种.
Jos*_*ith 51
您可以使用log_statement配置设置获取服务器的所有查询的列表
https://www.postgresql.org/docs/current/static/runtime-config-logging.html#guc-log-statement
只需设置它,并记录日志文件路径,您将拥有该列表.您还可以将其配置为仅记录长时间运行的查询.
然后,您可以接受这些查询并对它们运行EXPLAIN,以了解它们发生了什么.
https://www.postgresql.org/docs/9.2/static/using-explain.html
vla*_*adr 29
添加到Joshua的答案,查看当前正在运行的查询只需在任何时候发出以下语句(例如在PGAdminIII的查询窗口中):
SELECT datname,procpid,current_query FROM pg_stat_activity;
Run Code Online (Sandbox Code Playgroud)
样本输出:
datname | procpid | current_query
---------------+---------+---------------
mydatabaseabc | 2587 | <IDLE>
anotherdb | 15726 | SELECT * FROM users WHERE id=123 ;
mydatabaseabc | 15851 | <IDLE>
(3 rows)
Run Code Online (Sandbox Code Playgroud)
小智 23
我发现了pgBadger(http://dalibo.github.io/pgbadger/),这是一个很棒的工具,可以多次拯救我的生命.以下是报告示例:http://dalibo.github.io/pgbadger/samplev4.html.如果您打开它并转到"顶部"菜单,您可以看到最慢的查询和耗时的查询.然后,您可以询问详细信息并查看以小时显示查询的精美图表,如果使用详细信息按钮,则可以以漂亮的形式查看SQL文本.所以我可以看到这个工具是免费和完美的.
您可以使用pg_stat_statements扩展。
如果在 docker 中运行数据库,只需在 中添加此命令docker-compose.yml,否则只需查看安装说明:
command: postgres -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all -c max_connections=200
Run Code Online (Sandbox Code Playgroud)
然后在数据库中运行以下查询:
CREATE EXTENSION pg_stat_statements;
Run Code Online (Sandbox Code Playgroud)
现在查看运行时间较长的操作:
SELECT * FROM pg_stat_statements ORDER BY total_time/calls DESC LIMIT 10;
Run Code Online (Sandbox Code Playgroud)
或者通过该视图进行其他查询以找到您要查找的内容。
| 归档时间: |
|
| 查看次数: |
49098 次 |
| 最近记录: |