AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 751009
Accepted
Thorsten Schöning
Thorsten Schöning
Asked: 2016-01-23 02:33:18 +0800 CST2016-01-23 02:33:18 +0800 CST 2016-01-23 02:33:18 +0800 CST

按需保存来自 Postgres 的 stats_temp_directory 的统计数据

  • 772

我们正在调查我们的一个虚拟机中的 I/O 负载以及优化它的可能性,结果表明大部分负载是由 PostgreSQL 的统计信息收集器生成的。它在 3,5 和 6,5 MB/s 之间跳跃。我已经找到了一些关于这个主题的有趣资源,他们建议使用 tmpfs 将大部分统计信息保存在内存中,这对我来说很有意义,并且具体的 VM 有足够的可用 RAM 来支持这种情况。

来源 1 说明如下:

重新启动后,PostgreSQL 会将文件复制到新位置(并在停止时返回)。

这与temp配置名称中的stats_temp_directory声音相结合,就像数据被保存在其他地方一样。

那么在 Postgres 进程不正常关闭的情况下临时数据会发生什么情况呢?如果该过程在上周运行而没有任何问题,它是否完全丢失了?还是 Postgres 在运行时定期将数据保存在临时目录之外?它可以在不干净的关机后简单地使用可用的临时数据吗?

我之所以问,是因为目前一旦写入的数据会持久保存在本地文件系统中,并且写入数据的操作似乎是原子的,但是如果我们改用 tmpfs,如果整个服务器出现故障,可能会丢失几周的统计数据一些原因。

有没有办法让 Postgres 定期保存 tmpfs 之外的数据,比如每隔几个小时左右一次?

或者我是否需要使用一些覆盖/堆叠/任何文件系统,将持久的文件系统安装为较低的,将 tmpfs 安装为较高的,并找到某种方法来手动同步一次?

谢谢!

performance
  • 1 1 个回答
  • 432 Views

1 个回答

  • Voted
  1. Best Answer
    FuzzyChef
    2018-04-06T21:06:53+08:002018-04-06T21:06:53+08:00

    PostgreSQL 没有内置工具来定期保存收集器统计信息。它们被认为是可更换的。请记住,分析器收集的表统计信息与统计信息收集器收集的统计信息之间存在差异。后者是 stats_temp_directory 中的内容。

    因此,您在这里的答案将取决于您为什么要在发生崩溃时保留它们。有两个原因:

    1. 您不希望 Autovacuum 丢失表,因为它丢失了更新计数;
    2. 您在某处使用表更新计数作为监控的一部分。

    我认为第一个原因可能无关紧要,除非您有某些原因导致 PostgreSQL 每天都意外关闭,在这种情况下您应该解决这个问题。此外,您可以通过在重新启动 Postgres 后运行数据库范围的 VACUUM 来修复问题。

    由于第二个原因,仅仅累积计数器本身并没有那么有用。我的意思是,如果一个表在其生命周期中有 100,000 次删除,这是否意味着它在 100 天内每天有 1000 次删除,或者是否意味着昨天有人刚刚删除了一半的表?你不知道。因此,如果您关心这些计数,您应该每天或每小时对您的统计数据进行快照,以便您获得时间和计数。您可能会看一下重振 pgStatsPack 的尝试,该工具正是这样做的。

    • 0

相关问题

  • 基于 Microsoft 的服务器(IIS、MSSQL 等)上的病毒扫描应排除哪些内容?

  • jvm性能调优技巧/资源?

  • 加快 MSSQL 快照复制到 SQLExpress 副本的速度

  • 聚集索引与非聚集索引?

  • 使用大量 javascript 的页面上的鱿鱼速度很慢

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve