暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

stats_fetch_consistency:是否缓存 PostgreSQL 的监控统计信息?

王语嫣 2025-03-12
12

我从 2006 年开始使用 PostgreSQL。尽管如此,我还是会定期学习 PostgreSQL 的新知识。有时感觉我知道的越多,我就越觉得我还有很多东西要学。培训课程中初学者的问题常常让我学到新东西!今天,我的同事Pavlo告诉我有关 PostgreSQL 参数的信息stats_fetch_consistency。这可能不是您想要每天调整的参数,但您永远不知道。

使用默认的 stats_fetch_consistency 来获取过时的统计数据

假设您正在尝试调查检查点统计信息,您可以在pg_stat_checkpointerPostgreSQL v17 之后的视图中找到它:

-- start a transaction
BEGIN;

SELECT num_timed, num_requested FROM pg_stat_checkpointer;

 num_timed │ num_requested 
═══════════╪═══════════════
        52 │             4
(1 row)

-- explicitly trigger a checkpoint
CHECKPOINT;

SELECT num_timed, num_requested FROM pg_stat_checkpointer;

 num_timed │ num_requested 
═══════════╪═══════════════
        52 │             4
(1 row)
复制

看起来统计信息仅在新事务中更新。这有点令人惊讶,因为我没有使用REPEATABLE READ隔离级别。直到今天,我才知道我可以用 来改变这种行为stats_fetch_consistency!

可能的设置stats_fetch_consistency

该参数stats_fetch_consistency控制 PostgreSQL 如何缓存以下统计视图的数据:

  • pg_stat_archiver(WAL归档器统计信息)
  • pg_stat_bgwriter(背景作者统计)
  • pg_stat_checkpointer(检查点统计)
  • pg_stat_io(每个后端类型的 I/O 统计信息)
  • pg_stat_slru(有关SLRU缓存的统计信息)
  • pg_stat_wal(WAL统计)

可能的值包括:

  • none:PostgreSQL 根本不缓存统计数据,但每当您访问上述统计视图之一时都会读取它们
  • cache:当你在数据库事务中第一次访问某个对象(表等)的统计信息时,PostgreSQL 会读取该对象的数据,然后在事务持续期间进行缓存
  • snapshot:当你在数据库事务中第一次访问某个对象的统计信息时,PostgreSQL 会读取数据库中所有对象的数据,并在事务持续期间将其保存在缓存中
    默认值为cache。因此,为了避免上一节中的意外情况,我只需将其设置stats_fetch_consistency为“ none”!

历史stats_fetch_consistency

PostgreSQL v15在提交 5891c7a8edstats_fetch_consistency中引入,作为跟踪共享内存中数据库统计信息的努力的一部分。因此,如果您和我一样,以前从未听说过此参数,那么您至少可以找个借口说这是一个相当新的参数。

用例stats_fetch_consistency

我认为默认值cache很少是您想要的。对于临时查询,您可能希望设置“ none”以避免出现上述意外情况。如果您有一个监控系统,该系统定期在单个事务中查询各种数据库统计信息,则“ snapshot”可能有助于获得一致的值。否则,我也会none对我的监控系统使用“ ”,希望它不会多次查询同一对象的统计信息。

结论

stats_fetch_consistency是 PostgreSQL 中不太重要的参数之一。我认为它并不重要,但none在大多数情况下,设置为“ ”可能就足够了。

原文地址:https://www.cybertec-postgresql.com/en/stats-fetch-consistency-in-postgresql/
原文作者:Laurenz Albe

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论