postgresql 之 数据目录内部结构 简介

news/2024/7/9 20:29:18 标签: postgresql

一、一切皆为Oid

在Linux中一切皆为文件,在postgresql中一切皆为Oid。

1.1 什么是Oid

Object identifier(Oid), 对象标识符。 在postgresql内部,所有的数据库对象都是通过相应的Oid进行管理。

typedef unsigned int Oid;

Oid在代码中是一个4字节的无符号的整数。

1.2 数据库Oid

postgres@2f9d6ce41c2b:~$ /usr/local/pgsql/bin/psql 
psql (14.2)
Type "help" for help.

postgres=# select datname,oid from pg_database where datname='test';
 datname |  oid  
---------+-------
 test    | 16384
(1 row)

postgres=# 
postgres@2f9d6ce41c2b:~$ ls /usr/local/pgsql/data/base/ -l
total 24
drwx------ 2 postgres postgres 4096 Jun  6 14:38 1
drwx------ 2 postgres postgres 4096 Jun  6 14:38 12971
drwx------ 2 postgres postgres 4096 Jul  4 12:50 12972
drwx------ 2 postgres postgres 4096 Jun  7 12:19 16384
drwx------ 2 postgres postgres 4096 Jun 11 02:01 24577
drwx------ 2 postgres postgres 4096 Jul  4 12:50 40960

1.3 表Oid

postgres@2f9d6ce41c2b:~$ /usr/local/pgsql/bin/psql test
psql (14.2)
Type "help" for help.

test=# create table stu (name varchar(32), age int, sex char(2));
CREATE TABLE
test=# \dS+ stu
                                                  Table "public.stu"
 Column |         Type          | Collation | Nullable | Default | Storage  | Compression | Stats target | Description 
--------+-----------------------+-----------+----------+---------+----------+-------------+--------------+-------------
 name   | character varying(32) |           |          |         | extended |             |              | 
 age    | integer               |           |          |         | plain    |             |              | 
 sex    | character(2)          |           |          |         | extended |             |              | 
Access method: heap

test=# select oid,relname from pg_class where relname  = 'stu';
  oid  | relname 
-------+---------
 49152 | stu
(1 row)

test=# 

postgres@2f9d6ce41c2b:~$ ls /usr/local/pgsql/data/base/16384/49152 -hal
-rw------- 1 postgres postgres 0 Jul  4 12:57 /usr/local/pgsql/data/base/16384/49152

二、和MySQL对比

数据库数据库存储表存储编码影响
postgresql目录名为对应的Oid(数字)文件名为对应的Oid (数字)只是一个数值,不受影响
mysql目录名为数据库名(字符串)文件名为表名 (字符串)受影响

postgresql和mysql都是将数据库作为目录,对应的表则在对应的目录下,方便查找以及管理。

三、 数据目录结构

root@2f9d6ce41c2b:/# tree /usr/local/pgsql/data/ -L 1
/usr/local/pgsql/data/
|-- PG_VERSION 
|-- base
|-- global
|-- pg_commit_ts
|-- pg_dynshmem
|-- pg_hba.conf
|-- pg_ident.conf
|-- pg_logical
|-- pg_multixact
|-- pg_notify
|-- pg_replslot
|-- pg_serial
|-- pg_snapshots
|-- pg_stat
|-- pg_stat_tmp
|-- pg_subtrans
|-- pg_tblspc
|-- pg_twophase
|-- pg_wal
|-- pg_xact
|-- postgresql.auto.conf 
|-- postgresql.conf 
|-- postmaster.opts
`-- postmaster.pid

17 directories, 7 files
名称描述
PG_VERSIONpg服务器主版本号文件
base/数据库目录都在此目录下
global/数据库集簇范围的表(比如pg_database, 类似mysql的performance_schema)
pg_commit_ts/事物提交的时间戳数据
pg_dynshmem/动态共享内存子系统中使用的文件
pg_hba.conf控制pg客户端认证配置的文件
pg_ident.confpg用户映射文件
pg_logical/逻辑解码的状态数据
pg_multixact/多事务状态数据
pg_notify/Listen/Notify状态数据
pg_replslot/复制槽数据
pg_serial/已提交的可串行化事务相关信息
pg_snapshots/快照信息
pg_stat/统计子系统的永久文件
pg_stat_tmp/统计子系统的临时文件
pg_subtrans/子事务状态数据
pg_tblspc/指向表空间的符号链接
pg_twophase/两阶段事务的状态文件
pg_wal/WAL文件
pg_xact/事务提交状态数据
postgresql.auto.conf存储使用alter system修改的配置
postgresql.conf配置文件
postmaster.opts记录服务器上一次启动的命令行选项
postmaster.pid服务器pid文件

http://www.niftyadmin.cn/n/1829987.html

相关文章

报表导出功能

jsp页面中书写的 java代码 参数 quarter 代表时间日期格式 20161 2016年第一季度 dptid 部门编号 1 <%page contentType"text/html; charsetGBK"%>2 <%page import"java.net.URLEncoder"%>3 <%page import"com.projectcycle.process.d…

Java NIO 系列教程(转)

原文中说了最重要的3个概念&#xff0c;Channel 通道Buffer 缓冲区Selector 选择器其中Channel对应以前的流&#xff0c;Buffer不是什么新东西&#xff0c;Selector是因为nio可以使用异步的非堵塞模式才加入的东西。以前的流总是堵塞的&#xff0c;一个线程只要对它进行操作&am…

Oracle Dataguard 介绍

Oracle DataGuard介绍 一、 DataGuard的基本原理 当某次事务处理对生产数据库中的数据作出更改时&#xff0c;Oracle数据库将在一个联机重做日志文件里记录此次更改。在DataGuard中能够配置写日志的这个过程&#xff0c;除了把日志记录到本地的联机日志文件和归档日志文件里&am…

松鼠摘测试报告

松鼠摘项目测试 测试工作安排 5W原则 测试开始时间 &测试结束时间​ 11月6号&11月19号 测试的内容模块定位&#xff08;包含哪些内容测试点&#xff09; 界面跳转模块&#xff0c;文字编辑模块&#xff0c;数据存储模块测试的参与人员 团队全体输出文档的规定 按照规格…

postgresql之整体查询大致过程

客户端通过pg服务器查询的大致过程如下 一、 建立连接 客户端首先需要连接上pg服务器&#xff0c;服务器在和客户端建立连接后fork一个子进程处理后续客户端的请求&#xff0c;服务器然后等待下一个客户端的连接。 二、发送请求 客户端发送请求数据给pg服务器&#xff0c;pg…

FB引擎系列-之CloudSand

CloudSand&#xff0c;欲打破之前的集中版本制作的模式&#xff0c; http://code.taobao.org/p/cloudsand包含服务器端代码&#xff08;php&#xff09;和客户端代码&#xff08;unity&#xff09; EasyDown的时候&#xff0c;是采用一种经典的模式准备原始资源-》打包制作版本…

杭电1465--不容易系列之一

不容易系列之一 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 16634 Accepted Submission(s): 6928 Problem Description大家常常感慨&#xff0c;要做好一件事情真的不容易&#xff0c;确实&#xff0c;失败…

【转】Nginx中upstream有以下几种方式:

1、轮询(weight1) 默认选项&#xff0c;当weight不指定时&#xff0c;各服务器weight相同&#xff0c; 每个请求按时间顺序逐一分配到不同的后端服务器&#xff0c;如果后端服务器down掉&#xff0c;能自动剔除。upstream bakend {server 192.168.1.10;server 192.168.1.11;}2、…