postgresql 临时表_超详细的PG表空间布局设计、管理方式介绍

概述

PostgreSQL中的表空间实际上就是文件系统位置的一个目录,可以保存所有其他对象的容器,如表、索引等,有默认表空间、共享系统表表空间、自定义表空间。

一般PG DBA会规划一个存索引的表空间、存归档的表空间,一个很频繁使用的索引可以被放在非常快并且非常可靠的磁盘上,一个很少使用的或者对性能要求不高的存储归档数据的表可以存储在一个便宜但比较慢的磁盘系统上。

DBA规划表空间就是合理利用磁盘性能和空间,制定最优的物理存储方式来管理数据库表和索引。

aeb9e3129c5f3b6aec1c8a492e44b6fb.png

一、Oracle VS PG 数据库的物理布局设计

在Oracle数据库中;一个表空间只属于一个数据库使用;而一个数据库可以拥有多个表空间。属于"一对多"的关系

在PostgreSQL集群中;每个数据库都会在$PGDATA/base下面生成一个子目录,文件名与数据库oid一一对应,一个表空间可以让多个数据库使用;数据库目录可以分布于多个表空间,也就是同一个数据库oid可以存在于不同表空间。属于"多对多"的关系。


二、Oracle VS PG系统自带表空间

1、Oracle自带系统表空间

1)system表空间

每个Oracle数据库都会有SYSTEM表空间,而且SYSTEM表空间总是要保持在联机模式下,因为其包含了数据库运行所要求的基本信息,如:数据字典、联机求助机制、所有回退段、临时段、所有的用户数据库实体、其它ORACLE软件产品要求的表等等。

2)SYSAUX表空间

作为SYSTEM表空间的辅助表空间,主要存放一些其他的 metadata 组件,如 OEM,Streams 等会默认存放在 SYSAUX 表空间里。

3)临时表空间

临时表空间是用来管理数据库排序操作以及用于存储临时表、中间排序结果等临时对象,当ORACLE里需要用到SORT的时候,并且当PGA中sort_area_size大小不够时,将会把数据放入临时表空间里进行排序。像数据库中一些操作: CREATE INDEX、 ANALYZE、SELECT DISTINCT、ORDER BY、GROUP BY、 UNION ALL、 INTERSECT、MINUS、SORT-MERGE JOINS、HASH JOIN等都可能会用到临时表空间。当操作完成后,系统会自动清理临时表空间中的临时对象,自动释放临时段。

4)UNDO表空间

undo表空间中会自动分配undo段,这些undo段用来保存事务中的DML语句的undo信息,也就是来保存数据在被修改之前的值。在rollback,实例恢复(前滚),一致性读CR块的构造时会使用到undo信息。由于undo的引入,从而Oracle的select语句实现一致性读时,不需要任何锁。

5)USERS表空间

创建用户必须为其指定表空间,如果没有显性指定默认表空间,则指定为users表空间,此用户所有信息都会放入到users表空间中。

2、PG自带系统表空间

注意PG默认没有temp表空间(或者说临时段默认是存放在pg_default表空间)和undo表空间。

1)pg_default表空间

表空间pg_default是用来存储系统目录对象、用户表、用户表index、和临时表、临时表index、内部临时表的默认空间。对应存储目录$PADATA/base/

(1)目录名“1”是系统数据库template1各relation的存储目录

(2)目录数字“倒数第二”是系统数据库template0各relation的存储目录

(3)其他数字目录是用户建立的数据库目录

(4)目录的命名方法就是数据库的oid值

(5)FSM的文件记录每个数据块的空闲空间

(6)VM文件让vacuum高效工作,被标为无效的记录需要用vacuum来进行清理,需要一个文件来标识哪些数据块中存在无效记录来达到高效的清理。

2)pg_global表空间

表空间pg_global用来存放系统字典表;对应存储目录$PADATA/global/


三、pg表空间物理布局图

c4914acaae453fbef95accd17737fd3c.png

四、PG表空间管理相关命令

1、查看表空间

dbselect * from pg_tablespace;
644563b291f8bec335f43bc628fe8707.png

2、创建表空间

语法:CREATE TABLESPACE tablespace_name [ OWNER { new_owner | CURRENT_USER | SESSION_USER } ] LOCATION 'directory'

注意目录"directory"必须是一个已有的空目录,并且属于PostgreSQL操作系统用户

这里把建用户、表空间、建库一起做一个实例介绍了。

su - postgrespsql--建用户CREATE USER dbmt WITH PASSWORD 'jkc800$uTxt$9K20';--创建表空间CREATE TABLESPACE dbmt OWNER dbmt LOCATION '/data/pgdata/dbmt';--建库CREATE DATABASE dbmt with OWNER=dbmt ENCODING='UTF-8' TABLESPACE=dbmt CONNECTION LIMIT=-1;--将dbmt数据库的所有权限都赋予dbmtGRANT ALL PRIVILEGES ON DATABASE dbmt TO dbmt;q
fa2571d142ae3ab5212dfebdb63357c3.png

3、删除表空间

 drop tablespace tablespace_name;

4、为数据库指定默认表空间

注意:

1)执行该操作不能连着对应数据库操作

2)对应的数据库不能存在表或者索引已经指定默认的表空间

3)执行该操作必须是没有人连着对应的数据库

 ALTER DATABASE name SET TABLESPACE new_tablespace;

5、将表从一个表空间移到另一个表空间

注意:在移动表的时候会锁表,此时对该表的所有操作都将被阻塞,包括select操作,所以请考虑在合适的实际做这个操作。

 ALTER TABLE name SET TABLESPACE new_tablespace;

6、临时表空间管理

PG的临时表空间用来存储临时表或临时表的索引,以及执行SQL时可能产生的临时文件例如排序,聚合,哈希等。为了提高性能,一般建议将临时表空间放在SSD或者IOPS,以及吞吐量较高的分区中。

PG临时表空间主要是通过参数temp_tablespaces进行配置,PostgreSQL允许用户配置多个临时表空间。配置多个临时表空间时,使用逗号隔开。如果没有配置temp_tablespaces 参数,临时表空间对应的是默认的表空间pg_default。

6.1、创建临时表空间

CREATE TABLESPACE temp01 LOCATION '/data/pgdata/temp';--查看临时表空间show temp_tablespaces;

6.2、设置临时表空间

--会话级生效set temp_tablespaces = 'temp01';--永久生效1)修改参数文件postgresql.conf2)执行pg_ctl reload

觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

05042ce276077e93adedfb2bb4c41d38.gif
PostgreSQL pg_catalog介绍和查询使用方法 PostgreSQL的pg_catalog是存储数据库元数据的核心系统目录,包含表、视图、索引等所有数据库对象的元数据。它由系统自动维护,用户通常不应直接修改。通过查询pg_catalog中的系统表(如pg_tables、pg_views、pg_indexes等),可以获取数据库结构、权限、统计信息等详细数据。常用查询包括查看数据库集群信息、表结构、权限角色等。使用这些信息时需注意:不要直接修改系统表、考虑性能影响、某些查询可能需要超级用户权限。pg_catalog是管理和了解PostgreSQL数据库的重 阅读详情

相关推荐

优化MySQL表空间利用率的方法和技巧

在MySQL数据库中,优化表空间的利用率是提高性能和节省存储空间的关键。下面将介绍一些优化MySQL表空间利用率的方法和技巧,帮助您更好地管理和优化您的数据库。通过以上方法和技巧,您可以优化MySQL表空间的利用率,提高数据库性能并节省存储空间。记得在执行任何操作之前,一定要备份您的数据以防止意外数据丢失。

MwgmPhilosophy的博客 419

oracle查看表空间使用情况

SELECT UPPER(F.TABLESPACE_NAME) "表空间名",   D.TOT_GROOTTE_MB "表空间大小(M)",   D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",   TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",   F.TOTAL_BYTES "空闲空间(M)",   F.MAX_

lio567的博客 486

【postgresql 基础入门】数据表的创建,永久数据放普通表,中间结果放临时表,附带信用卡业务案例SQL设计

postgresql 数据库是一款通用的关系型数据,在开源数据库中能与商业数据媲美,在业界也越来越流行。因为是开源数据库,不仅公开源码,还有很多使用案例,好用的插件,所以它的慢慢变成了数据库的先驱和标准,通过postgresql可以很好从使用到原理,彻底搞懂;如果是学习编程,也可以学到丰富的编程知识,数据结构,编程技巧,它里面还有很多精妙的架构设计,分层思想,可以灵活定制的思想。

一个追逐梦想的码农 8175

Mysql 查看数据库各个表占用空间

这篇文章主要给大家介绍了关于如何使用mysql语句查看数据库表所占容量空间大小的相关资料,如何在MySQL数据库管理中查询数据库、表、索引的容量大小是经常遇到的需求,需要的朋友可以参考下

龙井的专栏 1万+

PostgreSQL 系统表介绍

什么是系统表 在关系数据库中,为了实现数据库系统的控制,必须提供数据字典的功能。数据字典不仅存储各种对象的描述信息,而且存储系统管理所需的各种对象的细节信息。从内容来看,数据字典包含数据库系统中所有对象及其属性的描述信息、对象之间关系的描述信息、对象属性的自然语言含义以及数据字典变化的历史(即数据库的状态信息)。数据字典是关系数据库系统管理控制信息的核心,在PostgreSQL数据库系统中,系统表...

椟夜 2825

查看表空间大小及已经使用的百分比

查看表空间大小及已经使用的百分比 复制代码 select a.tablespace_name,a.bytes/1024/1024  "Sum MB",   (a.bytes-b.bytes)/1024/1024  "used MB",   b.bytes/1024/1024  "free MB",   round(((a.bytes-b.bytes)/a.bytes)*100,2)  "percent_used" from (select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a, (select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name) b where a.tablespace_name=b.tablespace_name order by ((a.bytes-b.bytes)/a.bytes) desc 复制代码

oracle 临时表存在哪里_超详细的PG表空间布局设计、管理方式介绍

概述PostgreSQL中的表空间实际上就是文件系统位置的一个目录,可以保存所有其他对象的容器,如表、索引等,有默认表空间、共享系统表表空间、自定义表空间。一般PG DBA会规划一个存索引的表空间、存归档的表空间,一个很频繁使用的索引可以被放在非常快并且非常可靠的磁盘上,一个很少使用的或者对性能要求不高的存储归档数据的表可以存储在一个便宜但比较慢的磁盘系统上。DBA规划表空间就是合理利用磁盘性能和...

weixin_39975744的博客 605

spreg:Python中的空间计量经济学回归

残渣 PySAL空间计量经济学软件包 spreg是“空间回归”的缩写,是一个Python软件包,用于估计同时进行的自动回归空间回归模型。 当对观测值相互影响的过程进行建模时,这些模型很有用。 该软件包是 许可证信息 有关该软件的历史记录,使用条款和条件以及所有担保的免责声明,请参见文件“ LICENSE.txt”。

postgresql 临时表_一文看懂PG的表空间物理布局设计、布局及管理

概述PostgreSQL中的表空间实际上就是文件系统位置的一个目录,可以保存所有其他对象的容器,如表、索引等,有默认表空间、共享系统表表空间、自定义表空间。一般PG DBA会规划一个存索引的表空间、存归档的表空间,一个很频繁使用的索引可以被放在非常快并且非常可靠的磁盘上,一个很少使用的或者对性能要求不高的存储归档数据的表可以存储在一个便宜但比较慢的磁盘系统上。DBA规划表空间就是合理利用磁盘性能和...

weixin_32831351的博客 988

【Unity游戏开发】SDK接入与集成——小白入门篇

一、简介   通常一款游戏开发到后期,一般都会涉及到第三方SDK的接入与集成,对于不熟悉SDK接入的同学来说,接SDK每次都是云里雾里,而熟悉SDK接入的同学又觉得不断地重复做接入SDK工作这样没有成就感,太尼玛无聊了(Android渠道一弄就十几个,直接吐血)。其实通常情况下接入SDK都是很简单的一个过程,本系列博客就让马三和大家从小白开始,从零基础开始学习如何接入SDK以及一些常见的SDK的...

weixin_34195142的博客 5763

人工智能发展史(从起步到磅礴)以及浪潮阶段

随机森林是将多个有差异的弱学习器(决策树)Bagging并行组合,通过建立多个的拟合较好且有差异模型去组合决策,以优化泛化性能的一种集成学习方法。从论文里可以了解到,GPT-1具有1.17个参数,采用了12层的Transformer 解码器结构,使用5GB的无标注文本数据,在8个GPU上训练了一个月,然后再进行人工监督的微调。训练相结合的理念(该方法在当时计算力上还是有很多挑战,基本上都是和链式求导的梯度算法相关的),这也解决了单层感知器不能做非线性分类的问题,开启了神经网络新一轮的高潮。

xiao77224li的博客 7505

PostgreSQL中系统表

postgreSQL接触了也好久了,一直对他处于一知半解状态。趁着最近有时间,就开始慢慢整理一下。下面先整理了postgreSQL的一些系统表相关东西,也就是当个笔记,方便以后快速查找。 show data_directory;-- 查询配置文件所在位置 show config_file; -- 查询数据储存目录 系统表 : 1)pg_authid表:包含有关数据库认证标识符(角色)的信息。一个角色体现"用户"和"组"的概念。一个用户实际上只是一个设置了 rolcanlogin 标志的...

漓涂 9372

【Unity】【模型】【AI建模】如何将AI生成的GLB格式3D模型文件导入Unity

本文介绍了一个将AI工具自动生成的GLB格式3D模型文件转换成fbx模型文件导入Unity的步骤。

O青草O的博客 Unity和游戏制作知识分享 1357

PG系统表之pg_class

pg_class记录表、索引、序列、视图等对象的信息。 pg_class 名称 类型 引用 描述 oid oid 行标识符 relname name 表、索引、视图等的名字 relnamespace oid pg_namespace.oid 包含该关系的名字空间的OID reltype oid pg_type.oid 可能存在的表行类型所对应数据类型的OID(对索引为0,索引没有pg_type项) reloftype oid pg_type.oid 对于有类型的表,为底层

雪辉博客 1万+

LangChain + Milvus Lite:从零搭建本地RAG知识库

本文详细介绍了如何利用LangChain、Milvus Lite和gte-large-zh模型,在本地从零搭建一个完整的RAG知识库系统。文章涵盖了环境配置、文档处理与向量化、本地向量库构建以及检索问答实现的全流程,重点突出了完全本地化部署带来的数据隐私安全和成本优势,为开发者提供了一条实践性极强的技术路径。

weixin_29044713的博客 444

TeXstudio完整安装配置教程(2025最新版)

至此,你已经完成了TeXstudio的完整安装和配置!现在你可以:✅ 使用TeXstudio编写LaTeX文档✅ 正确编译中英文混排的文档✅ 掌握基本的编辑和配置技巧LaTeX的学习曲线较陡,但一旦掌握,你会发现它在学术写作中的强大之处。建议从简单的文档开始练习,逐步掌握更高级的功能。祝你LaTeX写作顺利!如果有任何问题,欢迎在评论区留言交流。关键词:TeXstudio安装、LaTeX环境配置、中文LaTeX、TeX Live、学术论文写作更新日期:2025年10月。

weixin_51241407的博客 4500

Postgresql学习之系统表

relreplident:用于形成行的“副本标识”的列:d= default(主键,如果有),n= nothing,f= all columns,i= index with set(如果使用的索引已被删除,则与 nothing 相同)如果关系不是表,则为零。typlen:对于固定大小的类型,是该类型的内部表示形式的字节数。relkind:r= 普通表, i= 索引, S= 序列, t= TOAST 表, v= 视图, m= 物化视图,c = 复合类型,f = 外表, p= 分区表, l= 分区索引。

YM_hao的博客 2550

DDR为什么需要DQS信号?

本文根据相关书籍和个人经验,谈了一下对DDR中DQS信号作用的理解

weixin_41155581的博客 2万+

PostgreSQL插件pg_repack介绍和简单使用【2】

pg_repack

ly0425的博客 1131

C++版Cesium实战:从OpenGL到3DTiles的全流程开发指南

本文提供了一份C++版Cesium全流程开发指南,详细阐述了如何利用OpenGL和Qt从零构建高性能、可离线部署的三维GIS应用。内容涵盖开发环境搭建、OpenGL渲染引擎初始化、Cesium核心坐标系与场景管理移植,并重点解析了3DTiles数据的解析、异步加载与渲染优化等硬核实战技术,旨在帮助开发者实现与现有C++工业软件的深度集成。

weixin_28077113的博客 164

PINN:当深度学习遇上朗伯-比尔定律

光谱数据处理中引入PINN的三种架构设计

qq_53529450的博客 154

PostgreSQL全局临时表(pgtt)——兼容oracle

0、概述 PostgreSQL中的临时表是会话级别的,即在会话结束后会自动被删除,或者可以设置为事务级别的,即在事务结束后自动被删除。也就是说不支持oracle的全局临时表的功能,除此之外,Oracle全局临时表是可以指定SCHEMA的,而PostgreSQL的临时表不能指定SCHEMA,会自动在temp临时SCHEMA中创建。 Pgtt是PostgreSQL的一个插件,可以用来兼容创建、管理和使用Oracle风格的全局临时表。 1、安装 **下载地址:**https://github.com/darold

Focus on PostgreSQL 4000

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

在 PostgreSQL 中临时表怎么使用

在 PostgreSQL 中,临时表(temporary table)是一种在当前数据库会话中存在的表,通常用于存储和处理临时数据。临时表在会话结束时自动删除,不会影响数据库中的其他表。临时表常用于复杂查询的中间结果、批量操作或缓存计算结果等场景。

weixin_44594317的博客 1620

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

PostgreSQL - 临时表的创建、使用与生命周期管理

PostgreSQL临时表使用指南 🗃️ 摘要:PostgreSQL临时表是一种会话或事务级别的特殊表,数据仅在当前会话/事务期间存在,结束后自动删除。本文介绍临时表的核心特点、创建语法(包括ON COMMIT选项)、生命周期管理(会话级和事务级),并与普通表、UNLOGGED表进行对比。临时表具有自动清理、会话隔离、高性能和安全性等优势,适合中间计算、ETL流程等场景。文章还详细说明了临时表的权限控制机制和命名空间隔离特性,帮助开发者安全高效地使用这一功能。(149字)

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

oracle 临时表存在哪里_从Oracle到PG:比较PostgreSQL和Oracle GTT的临时表

翻译:魏波 审核:刘彦红Hugo DiasHugo Dias是Severalnines的客座作家。多年来一直使用各种编程语言(如C,C ++,Python和Perl)开发软件,拥有PostgreSQL管理员的经验。前言临时表是大多数数据库中存在的概念,但通常有不同的工作方式。本博客通过一些具体示例介绍了PostgreSQL(版本11)或Oracle(版本12c)数据库中此类表的技术特性...

weixin_40001442的博客 413

PostgreSQL 系统表深度解析:从pg_class到pg_index,5张核心表掌握元数据

本文深入解析PostgreSQL系统表的核心机制,重点介绍pg_class、pg_attribute和pg_index等5张关键系统表的结构与功能。通过实际SQL示例展示如何查询表结构、索引元数据等关键信息,帮助开发者掌握数据库元数据管理技巧,提升查询优化和数据库维护能力。

转些好文章,促进分享。 418
上一篇: mysql ref or null_[转]一张图彻底搞懂MySQL的 explain
下一篇: emqx mysql_EMQX企业版中文文档-ReadTheDocs.PDF
龟与神经贱
博客等级 码龄9年 28粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值