• 根据数据使用频率来选择不同的存储类型
  • 控制一些数据库对象的IO性能

比如历史数据表我们存放在SATA盘,频繁使用的表存放在SSD盘。

filespace指的是所有的存储文件系统位置的集合。 1个filespace可以被1个或多个tablespace使用,可以通过

SQL命令查看filespace和tablespace对应关系。

GP有个默认的Filespace是pg_system

  1. fsname | fsowner
  2. -----------+---------
  3. pg_system | 10
  • 创建config文件

文件每行内容格式为:<hostname>:<dbid>:/<filesystem_dir>/<seg_datadir_name>,每一个节点都需要配置,包括Master、Slave以及Segment gpfilespace_config文件(文件名任意)内容如下:

  1. filespace:test
  2. localhost:1:/data1/test/demoDataDir-1
  3. localhost:2:/data1/test/demoDataDir0
  4. localhost:4:/data1/test/demoDataDir2
  • 执行gpfilespace命令
  1. gpfilespace -c gpfilespace_config

一旦集群中创建了新的Filespace,那么再创建备库、创建Mirror等都需要指定Filespace

创建备库时创建Filespace

参数格式为:filespace1_name:fs1_location,filespace2_name:fs2_location

创建Mirror时创建Filespace

  1. filespaceOrder=[<filespace1_fsname>[:<filespace2_fsname>:...]
  2. mirror<content>=<content>:<address>:<port>:<mir_replication_port>:<pri_replication_port>:<fselocation>[:<fselocation>:...]

内如如下:

  1. filespaceOrder=test
  2. mirror0=0:localhost:21000:22000:23000:/data1/test/mirror/demoDataDir0:/data1/test/mirror_file/demoDataDir0

语法:CREATE TABLESPACE tablespace_name [OWNER username] FILESPACE filespace_name 这点和PG不同,PG可以在创建tablespace的时候直接指定文件系统位置,PG语法如下:

  1. CREATE TABLESPACE tablespace_name
  2. [ OWNER user_name ]
  3. LOCATION 'directory'
  4. [ WITH ( tablespace_option = value [, ... ] ) ]

GP有两个默认的tablepace,pg_default和pg_global

Greenplum在执行SQL的过程中可能产生大量的workfile和temporary file,为了单独隔离这些文件(避免数据磁盘满或者放到SSD盘提高性能等),可以将这些临时文件空间可以单独放到一个文件系统中

  • 查看当前的临时文件filespace
  1. gpfilespace --showtempfilespace
  • 将临时文件目录移到指定的filespace
  1. gpfilespace --movetempfilespace test
  1. 17511
  2. 1 /data1/test/demoDataDir-1

Filespace和Tablespace不仅能够方便我们管理数据存储位置,而且合理搭配SSD和SATA盘能够显著提升IO性能。当然,我们需要熟悉gpfilespace命令,filespace创建之后是不能够删除的,同时在创建备库、创建Mirror需要指定filespace。