我们正在调查我们的虚拟机中的I / O负载以及对其进行优化的可能性,并且显示大部分负载是由PostgreSQL的统计收集器生成的。 它跳跃3,5和6,5 MB /秒。 我已经在这个主题上find了一些有趣的资源 ,他们build议使用tmpfs把大部分统计数据保存在内存中,这对我来说是有意义的,具体的虚拟机有足够的RAM来支持这种情况。
来源1说以下内容:
重新启动后,PostgreSQL将把这些文件复制到新的位置(当它停止时返回)。
这与stats_temp_directory的configuration名称中的temp结合听起来就像数据在其他地方持久化一样。
那么在Postgres进程不干净的情况下,临时数据会发生什么? 如果这个过程在最后一周没有任何问题,它会完全丢失吗? 或者,Postgres在运行时是否定期保存临时目录之外的数据? 可能在不干净的关机后简单地使用可用的临时数据?
我在问,因为目前一旦写入的数据被保存在本地文件系统中,并且用于写入数据的操作似乎是primefaces性的,但是如果我们切换到使用tmpfs,那么如果整个服务器出现故障,那么数周的统计数据可能会丢失一些原因。
有没有办法让Postgres定期在tmpfs之外保存数据,就像每隔一小时左右一次?
或者,我需要使用一些覆盖/堆叠/任何文件系统,将持久的一个更低,tmpfs更高,并find一些手动同步手动一次?
谢谢!