如何找到消耗最多的 postgresql 查询 I/O

How to find postgresql query which is consuming the most I/O

假设我有这样一个 iotop 视图:

怎么找到这里打硬盘这么重的SELECT

准备:

编辑postgresql.conf:

  • pg_stat_statements 添加到 shared_preload_libraries 并重新启动 PostgreSQL。

  • 设置track_io_timing = on.

现在暂时让工作量运行。

然后找到你的 I/O 猪:

SELECT query
FROM pg_stat_statements
ORDER BY blk_read_time + blk_write_time DESC
LIMIT 1;