首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL中指标建设的监测进展

PostgreSQL中指标建设的监测进展
EN

Database Administration用户
提问于 2012-01-22 01:20:13
回答 4查看 51K关注 0票数 78

是否有方法监视在PostgreSQL中创建索引的过程。我正在一个大表上创建一个索引,我想看看这种情况发生的速度有多快。

有办法监视这件事吗?

EN

回答 4

Database Administration用户

发布于 2019-09-27 13:53:06

这是可能的,因为PostgreSQL 12发布(发布于2019年10月3日)。

代码语言:javascript
复制
SELECT
  now()::TIME(0),
  a.query,
  p.phase,
  round(p.blocks_done / p.blocks_total::numeric * 100, 2) AS "% done",
  p.blocks_total,
  p.blocks_done,
  p.tuples_total,
  p.tuples_done,
  ai.schemaname,
  ai.relname,
  ai.indexrelname
FROM pg_stat_progress_create_index p
JOIN pg_stat_activity a ON p.pid = a.pid
LEFT JOIN pg_stat_all_indexes ai on ai.relid = p.relid AND ai.indexrelid = p.index_relid;

这可以用于检查在REINDEX DATABASE命令上正在重建的索引。

详细信息请参见pg的医生_状态_进展_创建_索引视图depesz的博客文章

票数 54
EN

Database Administration用户

发布于 2017-01-23 18:38:50

根据Postgres Wiki索引维护页面,您可以使用以下方法查找所有索引的当前状态:

代码语言:javascript
复制
SELECT
  t.tablename,
  indexname,
  c.reltuples AS num_rows,
  pg_size_pretty(pg_relation_size(quote_ident(t.tablename)::text)) AS table_size,
  pg_size_pretty(pg_relation_size(quote_ident(indexrelname)::text)) AS index_size,
  CASE WHEN indisunique THEN 'Y'
    ELSE 'N'
  END AS UNIQUE,
  idx_scan AS number_of_scans,
  idx_tup_read AS tuples_read,
  idx_tup_fetch AS tuples_fetched
FROM pg_tables t
  LEFT OUTER JOIN pg_class c ON t.tablename=c.relname
  LEFT OUTER JOIN
    ( SELECT c.relname AS ctablename, ipg.relname AS indexname, x.indnatts AS number_of_columns, idx_scan, idx_tup_read, idx_tup_fetch, indexrelname, indisunique FROM pg_index x
      JOIN pg_class c ON c.oid = x.indrelid
      JOIN pg_class ipg ON ipg.oid = x.indexrelid
      JOIN pg_stat_all_indexes psai ON x.indexrelid = psai.indexrelid )
    AS foo
  ON t.tablename = foo.ctablename
WHERE t.schemaname='public'
ORDER BY 1,2;

num_rows指示索引覆盖了多少行,index_size将随着索引的生成而增长。

票数 48
EN

Database Administration用户

发布于 2012-01-28 15:15:26

所以,没有什么好的方法可以在12之前完成,但是如果你真的需要知道.首先,根据数据大小*行+开销计算索引应该占用的空间。然后,您可以使用pfiles或pg构架之类的东西来查找在$PGDATA中正在写入的文件;如果索引超过1GB,它将是一系列像nnnn.n这样的文件,其中第一组n是一致的,最后n为每个GB文件的增量。一旦您知道创建了多少个文件,您就可以观察文件的增长,并计算出离完成有多近。粗略估计,但也许会有帮助。

票数 12
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/11329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档