GPDB · 特性分析· Filespace和Tablespace

本文涉及的产品
RDS AI 助手,专业版
RDS Agent(兼容OpenClaw),2核4GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介:

Filespace和Tablespace

Tablespace允许每个节点使用多种文件目录或者文件系统,当前所有数据都是存储在默认base目录下。我们可以根据需要制定最优的物理存储方式。使用表空间有下面几个优点:

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

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

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

select * from pg_filespace_entry,pg_tablespace,pg_filespace where pg_filespace.oid=pg_filespace_entry.fsefsoid and pg_filespace.oid=pg_tablespace.spcfsoid

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

创建Filespace

GP有个默认的Filespace是pg_system

postgres=# select * from pg_filespace;
  fsname   | fsowner
-----------+---------
 pg_system |      10
(1 rows)

如果需要创建新的Filespace,那么需要通过gpfilespace工具创建,步骤如下:

  • 创建config文件

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

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

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

使用gpfilespace创建filespace过程中会重启整个集群,而关闭集群的命令是gpstop -M fast,这样如果存在备库连接,那么会一直等待,所以我们需要手动杀掉备库连接,这样才能快速完成整个过程。

创建备库时创建Filespace

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

gpinitstandby -s localhost -P 15433 -F test:/data1/test/demoDataDir0-stand,pg_system:/data1/tmp_datadir_for_gpdb_bld/qddir_stand -a

创建Mirror时创建Filespace

文件格式为:

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

内如如下:

filespaceOrder=test
mirror0=0:localhost:21000:22000:23000:/data1/test/mirror/demoDataDir0:/data1/test/mirror_file/demoDataDir0
mirror1=1:localhost:21001:22001:23001:/data1/test/mirror/demoDataDir1:/data1/test/mirror_file/demoDataDir1
mirror2=2:localhost:21002:22002:23002:/data1/test/mirror/demoDataDir2:/data1/test/mirror_file/demoDataDir2

创建Tablespace

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

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

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

postgres=# select spcname,spcfsoid from pg_tablespace ;
  spcname   | spcfsoid
------------+----------
 pg_default |     3052
 pg_global  |     3052
(2 rows)

临时文件空间

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

  • 查看当前的临时文件filespace
gpfilespace --showtempfilespace
  • 将临时文件目录移到指定的filespace
gpfilespace --movetempfilespace test

执行成功之后将会在每个节点的数据目录(包括Master、Slave、Segment)下生产一个gp_temporary_files_filespace文件,内容如下:

17511
5 /data1/test/demoDataDir0-stand
1 /data1/test/demoDataDir-1

总结

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

目录
相关文章
|
存储 算法 安全
国密算法及简单使用
国密算法,即国家密码局认定的国产密码算法,主要用于保护国家关键信息基础设施和商业领域的加密通信和数据安全。根据 2019年10月26日第十三届全国人民代表大会常务委员会第十四次会议通过的《中华人民共和国密码法》,国家对密码实行分类管理,密码分为核心密码、普通密码和商用密码
2515 4
|
Python
分布式框架ray的基本使用记录
分布式框架ray的基本使用记录
1236 0
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
588 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
|
存储 Docker 容器
解决 docker 磁盘空间不足问题
解决 docker 磁盘空间不足问题
1797 0
|
8月前
|
人工智能 安全 中间件
阿里云 AI 中间件重磅发布,打通 AI 应用落地“最后一公里”
9 月 26 日,2025 云栖大会 AI 中间件:AI 时代的中间件技术演进与创新实践论坛上,阿里云智能集团资深技术专家林清山发表主题演讲《未来已来:下一代 AI 中间件重磅发布,解锁 AI 应用架构新范式》,重磅发布阿里云 AI 中间件,提供面向分布式多 Agent 架构的基座,包括:AgentScope-Java(兼容 Spring AI Alibaba 生态),AI MQ(基于Apache RocketMQ 的 AI 能力升级),AI 网关 Higress,AI 注册与配置中心 Nacos,以及覆盖模型与算力的 AI 可观测体系。
1542 86
|
人工智能 供应链 API
2026:深度拆解智能体(Agent)重构西南制造的三重核心能力
2026年,中国制造业重心西移,西南工厂面临供应链与人力双重挑战。智能体(Agent)正以感知、推理、行动三位一体能力,推动生产从“经验驱动”迈向“自主决策”。它不仅是技术升级,更是认知革命——重构调度、工艺与供应链,实现毫秒响应、知识沉淀与跨域协同,打造高“认知密度”的未来工厂。
260 0
|
人工智能 弹性计算 自然语言处理
5分钟部署,解锁100种和AI大模型的交互可能
阿里云弹性计算推出了一套高效、易用的个人AI大模型部署方案,帮助用户快速搭建专属的AI主页,开启智能化新体验,真正的实把“AI玩出花”。
|
SQL 存储 大数据
Flink 基础详解:大数据处理的强大引擎
Apache Flink 是一个分布式流批一体化的开源平台,专为大规模数据处理设计。它支持实时流处理和批处理,具有高吞吐量、低延迟特性。Flink 提供统一的编程抽象,简化大数据应用开发,并在流处理方面表现卓越,广泛应用于实时监控、金融交易分析等场景。其架构包括 JobManager、TaskManager 和 Client,支持并行度、水位线、时间语义等基础属性。Flink 还提供了丰富的算子、状态管理和容错机制,如检查点和 Savepoint,确保作业的可靠性和一致性。此外,Flink 支持 SQL 查询和 CDC 功能,实现实时数据捕获与同步,广泛应用于数据仓库和实时数据分析领域。
11041 42
|
机器学习/深度学习 人工智能 自然语言处理
昇腾AI行业案例(四):基于 Bert 模型实现文本分类
欢迎学习《昇腾行业应用案例》的“基于 Bert 模型实现文本分类”实验。在本实验中,您将学习如何使用利用 NLP (natural language processing) 领域的AI模型来构建一个端到端的文本系统,并使用开源数据集进行效果验证。为此,我们将使用昇腾的AI硬件以及CANN等软件产品。
1205 0
SpringBoot 如何使用 @ExceptionHandler 注解进行局部异常处理
SpringBoot 如何使用 @ExceptionHandler 注解进行局部异常处理