首页 > 数据库 >postgresql 之 数据目录内部结构 简介

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

时间:2022-12-08 09:34:02浏览次数:60  
标签:postgresql postgres -- 简介 Oid 内部结构 pg local

转:https://blog.csdn.net/happytree001/article/details/125610460

一、一切皆为Oid

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

1.1 什么是Oid

Object identifier(Oid), 对象标识符。 在postgresql内部,所有的数据库对象都是通过相应的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@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

 

 

标签:postgresql,postgres,--,简介,Oid,内部结构,pg,local
From: https://www.cnblogs.com/qsds/p/16965187.html

相关文章

  • postgresql数据库导入导出
    一、常规操作1、进入数据库psql-hlocalhost-p5432-Ukong2、查看库kong=#\lListofdatabasesName|Owner|Encodin......
  • 简介(Beginning Visual C++ 2013)
    欢迎阅读IvorHorton的《VisualC++2013入门》。通过本书,您可以使用Microsoft最新的应用程序开发系统VisualStudioProfessional2013成为一名有效的C++程序员。我的目标......
  • WebService简介
    WebService简介WebService也叫XMLWebService,WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是通过SOAP在We......
  • 前端开发:6、jQuery类库简介与基本使用
    jQuery类库目录jQuery类库一、简介二、jQuery查找对象1、选择器......
  • 蓝牙协议(HFP、HSP、A2DP、AVRCP)简介
    蓝牙协议(HFP、HSP、A2DP、AVRCP)简介当两台蓝牙设备建立连接时,它们会获取对应设备提供的协议。只有使用相同协议的设备才能交换数据,就像两个人要使用相同的语言才能......
  • mybatis-plus简介
    看到这个名字,就知道它是一个mybatis的增强版。个人觉得mybatis-plus同时拥有了JPA的便捷性和mybatis的灵活性,可谓集二者之优点:当你只需要简单的CRUD的时候,它内置了许多方......
  • kafka 简介与应用场景(一)
    kafka简介与应用场景(一)标签(空格分隔):kafka系列一:kafka简介二:kafka的相关组建三:kafka的架构四:kafka的应用场景一:kafka的简介:1.1kafka的简介Kafka是一......
  • ES6笔记 - proxy简介
    Proxy目录Proxy1.Proxy简介2.注意事项3.Proxy支持的所有拦截操作4.使用示例1.Proxy简介Proxy可以理解为在目标对象前架设一个"拦截层",外界对该对象的访问都必须......
  • docker 部署 rabbitmq(持久化) 和postgresql redis mysql
    rabbitmq:dockerrun-d--hostname=rabbitmq--restart=always-eRABBITMQ_DEFAULT_USER=admin-eRABBITMQ_DEFAULT_PASS=admin--name=rabbitmq-p5672:5672-p15672......
  • PostgreSQL 12系统表(2)
    转:https://blog.csdn.net/weixin_49756466/category_11607112.htmlpg_namespace存储名字空间   pg_sequence包含有关序列的信息。   pg_indexes提供了数据......