我有三个表空间。其中两个位于可用空间约为 400GiB 的磁盘上,一个位于可用空间约为 200GiB 的磁盘上。我想设置temp_tablespaces
较少使用后者磁盘,以防空间不足。我该怎么做?
答案1
假设您的表空间为ts1
、ts2
和ts3
,其中ts3
较小的一个是。
ALTER DATABASE your_database SET temp_tablespaces = ts1, ts1, ts2, ts2, ts3
看起来temp_tablespaces
列表中的重复值被保留了,这使得 Postgres 更有可能根据加权随机选择在这些表空间中写入临时文件。事务按顺序使用表空间,这也产生了大致相同的加权分布(文档)。因此,ts3
现在其使用率应为其他两个表空间的一半左右。
我现在正在尝试对一些大型查询执行此操作。我发现前两个查询使用了 84GiB,最后一个查询使用了 40GiB。