使 temp_tablespaces 优先使用某些表空间

使 temp_tablespaces 优先使用某些表空间

我有三个表空间。其中两个位于可用空间约为 400GiB 的磁盘上,一个位于可用空间约为 200GiB 的磁盘上。我想设置temp_tablespaces较少使用后者磁盘,以防空间不足。我该怎么做?

答案1

假设您的表空间为ts1ts2ts3,其中ts3较小的一个是。

ALTER DATABASE your_database SET temp_tablespaces = ts1, ts1, ts2, ts2, ts3

看起来temp_tablespaces列表中的重复值被保留了,这使得 Postgres 更有可能根据加权随机选择在这些表空间中写入临时文件。事务按顺序使用表空间,这也产生了大致相同的加权分布(文档)。因此,ts3现在其使用率应为其他两个表空间的一半左右。

我现在正在尝试对一些大型查询执行此操作。我发现前两个查询使用了 84GiB,最后一个查询使用了 40GiB。

相关内容