当我在我的表上运行查询时,我不知道这个过程需要多长时间。我正在处理一个包含 1100 万行的表,因此查询通常会运行几分钟 (AWS RDS)。有没有办法获得进度条或更好地了解查询需要多长时间?我通常对表的 1/10 执行查询以了解所需的时间。
编辑:我在笔记本中添加了我的具体情况
我喜欢运行的查询计算几列的移动平均值。下面复制了一个测试查询(仅 1 列,仅适用于年度分数,输出有限):
SELECT year,month, ptotww_m_30spfaf06, temporal_resolution,
SUM(ptotww_m_30spfaf06)
OVER(ORDER BY year ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) as ptotwwma_m_30spfaf06
FROM y2018m05d29_rh_total_demand_postgis_30spfaf06_v01_v01
WHERE temporal_resolution = 'year'
LIMIT 200
Run Code Online (Sandbox Code Playgroud)
该示例已经需要 52 秒才能运行,并且不适用于每月值。1969 年 1 月的每月 10 年移动平均线应该是 1960 年 1 月、1961 年 1 月 ... 1969 年 1 月的平均值。
不,目前 Postgres 中没有这样的功能。
已经做了一些工作来为将来的版本做准备。其结果之一是在 9.6 中引入的视图pg_stat_progress_vacuum使用了新的基础设施。
但是目前(2018 年)没有任何基础设施用于常规 SQL 查询(包括即将推出的 Postgres 11)。
Postgres Pro Standard(PostgreSQL 的一个分支)提供了扩展pg_query_state,可以显示正在运行的语句的执行计划和当前执行的步骤信息。但是您需要运行 Postgres Pro,该扩展与“普通”PostgreSQL 版本不兼容。
归档时间: |
|
查看次数: |
943 次 |
最近记录: |