postgresql的临时表空间,通过参数temp_tablespaces 进行配置,postgresql允许用户配置多个临时表空间。
配置多个临时表空间时,使用逗号隔开。
如果没有配置temp_tablespaces 参数,临时表空间对应的是默认的表空间。
postgresql的临时表空间用来存储临时表或临时表的索引,以及执行sql时可能产生的临时文件例如排序,聚合,哈希等。
为了提高性能,一般建议将临时表空间放在ssd或者iops,以及吞吐量较高的分区中。
例子:
当前未配置temp_tablespaces,使用默认表空间。
临时表放在默认表空间中。
执行一个大的排序,临时文件放在默认表空间中。
查看临时文件目录
新建一个表空间,并将所有用户的temp_tablespaces参数设置为这个新建的表空间。
重新测试,现在临时文件都会放到新建的表空间下面。
下面是greenplum的临时表空间,介绍:
关于filespace的使用,请先查看
https://yq.aliyun.com/articles/190
greenplum没有temp_tablespaces这个参数,那么临时文件应该放哪里呢?
greenplum将只有filespace的说法,并且临时文件是全局管理的,也就是说整个gp集群的临时文件是放在一个地方(filespace)的。
在greenplum中不同的用户不能使用不同的临时文件目录。
默认情况下临时文件是放在默认的表空间下面
临时文件(例如排序,哈希,产生的work file)
临时表
如果要修改greenplum临时文件的存放地,操作如下:
首先要创建filespace, 然后确保没有活跃会话,使用gpfilespace --movetempfilespace filespace_name命令迁移临时文件目录。