天天看点

PostgreSQL和Greenplum的临时表空间介绍

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命令迁移临时文件目录。

继续阅读