docker/docker组成tmpfs-pgsql_tmp目录



有人尝试过运行一个将tmpfs卷装载到pgsql_tmp的postgresql容器吗?(任何带有临时文件目录的数据库,我想都是这样)

它造成什么问题了吗?

这是个坏主意吗?

其他有用信息?

dockertmpfs-"与卷和绑定装载不同,tmpfs装载是临时的,并且只持久化在主机内存中。当容器停止时,tmpfs装入将被删除,写入其中的文件将不会持久化。">

pgsql_tmp-"临时文件(用于排序超出内存容量的数据等操作)在PGDATA/base/pgsql_tmp中创建,或者在表空间目录的pgsql_tmp子目录中创建(如果为它们指定了除pg_default之外的表空间)。临时文件的名称形式为pgsql_tmpPPP.NNN,其中PPP是拥有后端的PID,NNN区分该后端的不同临时文件。">

将此发布以供社区参考和研究。感谢您的帮助。

有过几次artifactory数据库填充索引节点的经历。重新启动堆栈后,必须手动删除tmp文件,这大约需要一个小时。

虽然在我(很少)的经验中它是有效的,但我对这个线程(镜像)的理解是,在某些情况下(高级用法?),这个文件夹可能不会接收到启动时需要的临时文件(请参阅表空间文档上的警告),所以调整work_memtemp_bufferstemp_file_limit似乎更好。

然而,作为参考,以下是使用docker compose:实现它的方式

services:
postgres:
image: postgres:alpine
command:
- postgres
# - -cshared_buffers=512MB  # Default = 128M
# - -cwork_mem=16MB  # Default = 4M ; total = this*worker(8)*parallel(2)?
# - -ctemp_buffers=32MB  # Default = 8M
- -clog_temp_files=0  # Log all temporary files creation
# - -clog_min_duration_statement=60s  # Log queries longer than this delay
# Ignored in swarm (https://github.com/moby/moby/issues/26714):
# shm_size: 512M  # Defaults to 64M ; related to total work_mem?
# Unsupported in swarm:
# tmpfs:
#   - /dev/shm:size=512M
volumes:
- postgres_data:/var/lib/postgresql/data
- type: tmpfs
target: /var/lib/postgresql/data/base/pgsql_tmp
tmpfs:
# 1G max - https://www.kernel.org/doc/html/latest/filesystems/tmpfs.html
size: 1073741824
# Workaround for ignored shm_size in swarm:
# - type: tmpfs
#   target: /dev/shm
#   tmpfs:
#     size: 536870912  # 512M max ; defaults to 64M ; relative to total work_mem?

相关内容

  • 没有找到相关文章

最新更新