首页 > 数据库 >数据库物理存储

数据库物理存储

时间:2024-05-31 17:43:33浏览次数:22  
标签:文件 存储 包含 数据库 子目录 pg 节点 物理

数据库文件布局

本节描述文件和目录级别的存储格式。

传统上,数据库集群使用的配置和数据文件一起存储在集群的数据目录中,通常称为PGDATA(以可用于定义它的环境变量的名称命名)。PGDATA的常见位置是/var/lib/pgsql/data。 由不同服务器实例管理的多个集群可以存在于同一台计算机上。

PGD​​ATA目录包含几个子目录和控制文件,如表 65-1所示。除了这些必需的项目之外,集群配置文件postgresql.confpg_hba.confpg_ident.conf传统上也存储在PGDATA中,尽管也可以将它们放在其他地方。

PGDATA的内容

ItemDescription
PG_VERSION 包含PostgreSQL主版本号的文件
base 包含每个数据库子目录的子目录
global 包含集群范围表的子目录,例如pg_database
pg_commit_ts 包含事务提交时间戳数据的子目录
pg_clog 包含事务提交状态数据的子目录
pg_dynshmem 包含动态共享内存子系统使用的文件的子目录
pg_logical 包含逻辑解码状态数据的子目录
pg_multixact 包含多事务状态数据的子目录(用于共享行锁)
pg_notify 包含 LISTEN/NOTIFY 状态数据的子目录
pg_replslot 包含复制槽数据的子目录
pg_serial 包含已提交的可序列化事务信息的子目录
pg_snapshots 包含导出快照的子目录
pg_stat 包含统计子系统永久文件的子目录
pg_stat_tmp 包含统计子系统临时文件的子目录
pg_subtrans Subdirectory containing subtransaction status data
pg_tblspc Subdirectory containing symbolic links to tablespaces
pg_twophase Subdirectory containing state files for prepared transactions
pg_xlog 包含 WAL(预写日志)文件的子目录
postgresql.auto.conf 用于存储由ALTER SYSTEM设置的配置参数的文件
postmaster.opts A file recording the command-line options the server was last started with
postmaster.pid 一个锁定文件,记录当前 postmaster 进程 ID (PID)、集群数据目录路径、postmaster 启动时间戳、端口号、Unix 域套接字目录路径(Windows 上为空)、第一个有效的 listen_address(IP 地址或*,如果不在 TCP 上监听则为空)和共享内存段 ID(服务器关闭后此文件不存在)

对于集群中的每个数据库,在PGDATA /base中都有一个子目录,以pg_database中数据库的 OID 命名。此子目录是数据库文件的默认位置;特别是,它的系统目录存储在那里。

每个表和索引都存储在单独的文件中。对于普通关系,这些文件以表或索引的文件节点号命名,可以在pg_class . relfilenode中找到。但对于临时关系,文件名的形式为BBB _ FFF,其中BBB是创建该文件的后端的后端 ID,FFF是文件节点号。在任一情况下,除了主文件(又名主分支)之外,每个表和索引都有一个空闲空间图(参见第 65.3 节),其中存储了有关关系中可用空闲空间的信息。空闲空间图存储在以文件节点号加上后缀_fsm命名的文件中。表还有一个可见性图,存储在以后缀_vm结尾的分支中,以跟踪已知哪些页面没有死元组。可见性图在第 65.4 节中进一步描述。未记录的表和索引有第三个分支,称为初始化分支,它存储在带有后缀_init的分支中

警告

请注意,虽然表的文件节点通常与其 OID 匹配,但情况并不一定如此;某些操作(如TRUNCATEREINDEXCLUSTER和某些形式的ALTER TABLE)可以在保留 OID 的同时更改文件节点。避免假设文件节点和表 OID 相同。此外,对于某些系统目录(包括pg_class本身),pg_class . relfilenode包含零。这些目录的实际文件节点号存储在较低级别的数据结构中,可以使用函数获取pg_relation_filenode()

当表或索引超过 1 GB 时,它将被划分为千兆字节大小的。第一个段的文件名与文件节点相同;后续段名为 filenode.1、filenode.2 等。这种安排避免了在具有文件大小限制的平台上出现问题。(实际上,1 GB 只是默认的段大小。可以在构建PostgreSQL时使用配置选项--with-segsize调整段大小。)原则上,空闲空间图和可见性图分叉也可能需要多个段,尽管在实践中这种情况不太可能发生。

如果一个表的列中可能包含较大的条目,则该表将具有一个关联的TOAST表,该表用于线外存储太大而无法正确保存在表行中的字段值。pg_class . reltoastrelid从一个表链接到其TOAST表(如果有)。

 

标签:文件,存储,包含,数据库,子目录,pg,节点,物理
From: https://www.cnblogs.com/wonchaofan/p/18225009

相关文章

  • 数据在内存中的存储
    在通过之前学习c语言相关的知识后我们知道c语言中有多种的数据类型,那么这其中在编写程序的时候用的整型和浮点型在内存空间中是按照什么样的规律存储的呢?整型和浮点型数据在的存储方法是相同的吗?在本篇中就将详细的讲解数据在内存当中存储的相关知识1.整数在内存中的存储在......
  • mongodb数据库查询调优之explain方法详解
    在MongoDB中,explain()方法可以帮助我们了解查询语句的执行计划和性能。通过分析explain()的结果,我们可以找出潜在的性能问题并对其进行优化。以下是使用explain()方法对MongoDB查询语句进行优化的步骤:使用explain()方法获取查询的执行计划:db.collection.find(query).exp......
  • 【MySQL】数据库优化
    一、优化数据类型在MySQL中不同的数据类型长度不同,在磁盘上所需要的存储空间也不同,如果数据库中使用不合理的数据类型,会造成很大的空间浪费,并且在数据插入与读取时,也会造成MySQL的性能低下。更小的数据类型更好如果没有特殊情况,尽量使用可以正确保存数据的最小数据类型,因为更......
  • 鸿蒙HarmonyOS实战-Web组件(Cookie及数据存储)
    ......
  • 达梦命令行使用管理员连接数据库 并切换活动数据库
    在达梦数据库中,管理员通常是指拥有SYSDBA权限的用户。要使用管理员身份连接数据库并切换到另一个数据库,你需要遵循以下步骤:退出当前会话:如果你已经在某个数据库上建立了连接,首先退出当前会话:quit;以管理员身份连接:使用以下格式以SYSDBA权限连接到数据库:sqlplus/n......
  • 墨天轮《2023年中国数据库行业年度分析报告》正式发布!
    为明晰发展脉络,把握未来趋势,墨天轮于5月29日正式发布 《2023年中国数据库年度行业分析报告》。该报告由墨天轮联合业界专家学者共同编写,共330页,旨在梳理和洞察中国数据库行业的发展趋势、技术创新、市场动态以及面临的挑战,为数据库行业的产学研用提供有价值的参考信息,推动行业的......
  • 作为最常用的存储协议,企业如何进行NAS存储统一管理?
    NAS存储时目前企业使用最普遍的存储方式之一,NAS存储具有非常明显的优势:如易于扩展,满足企业满足不断增长的数据存储需求;企业员工可便捷访问;成本低,支持多种操作环境和客户端等。但NAS存储也具有很明显的问题和使用痛点:性能瓶颈:在需要处理大量小块数据或进行高I/O操作的场景下,NAS......
  • 31.MySQL数据库【一】基础介绍
    【一】数据库初识1)存储数据的演变过程基于内存保存文件操作json模块搭建TCP的客户端和服务端,TCP服务端用作存储服务,TCP客户端用于上传和下载数据存储数据的位置就是数据库2)数据库本质就是一块基于网络通信保存数据的应用程序3)数据库的介绍1.关联性数据库(存......
  • 32.MySQL数据库【二】存储引擎与基本数据类型.
    【一】MySQL之存储引擎1)介绍针对不同的数据有不同的处理机制,存储引擎就是不同的处理机制2)MySQL主要的存储引擎1.innodb是MySQL5.5版本之后的默认存储引擎支持事务、外锁、外键2.myisam是MySQL5.5版本之前的默认存储引擎速度比innodb快,但数据安全性较弱3.memory......
  • 34.MySQL数据库【四】过滤条件
    过滤条件【一】语法select*/字段名from*/表名where*/字段名=字段值;--执行顺序from起手知道是那张表where根据过滤条件在表中过滤数据select再过滤出自己想要的数据【二】准备的数据#创建表createtablefilt_eg( idintnotnulluniqueauto_increment,......