当前位置:网站首页>Introduction to the internal structure of the data directory of PostgreSQL

Introduction to the internal structure of the data directory of PostgreSQL

2022-07-07 02:21:00 happytree001

One 、 Everything is Oid

stay Linux Everything in the book is a document , stay postgresql It's all about Oid.

1.1 What is? Oid

Object identifier(Oid), Object identifier . stay postgresql Inside , All database objects pass through the corresponding Oid Conduct management .

typedef unsigned int Oid;

Oid In the code is a 4 Unsigned integer of bytes .

1.2 database Oid

[email protected]:~$ /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=# 
[email protected]:~$ 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 surface Oid

[email protected]:~$ /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=# 

[email protected]:~$ 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

Two 、 and MySQL contrast

database Database storage Table is stored Coding impact
postgresql The directory name is the corresponding Oid( Numbers ) The file name is the corresponding Oid ( Numbers ) Just a number , Unaffected
mysql The directory name is database name ( character string ) The file name is the table name ( character string ) be affected

postgresql and mysql All use the database as a directory , The corresponding table is under the corresponding directory , Easy to find and manage .

3、 ... and 、 Data directory structure

[email protected]:/# 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
name describe
PG_VERSIONpg Server master version number file
base/ All database directories are under this directory
global/ Database cluster wide tables ( such as pg_database, similar mysql Of performance_schema)
pg_commit_ts/ Timestamp data submitted by the transaction
pg_dynshmem/ Files used in the dynamic shared memory subsystem
pg_hba.conf control pg Client authentication configuration file
pg_ident.confpg User mapping file
pg_logical/ Logically decoded status data
pg_multixact/ Multi transaction status data
pg_notify/Listen/Notify Status data
pg_replslot/ Copy slot data
pg_serial/ Information about committed serializable transactions
pg_snapshots/ Snapshot information
pg_stat/ Permanent file of statistical subsystem
pg_stat_tmp/ Temporary files of statistical subsystem
pg_subtrans/ Sub transaction status data
pg_tblspc/ Symbolic links to tablespaces
pg_twophase/ The state file of a two-phase transaction
pg_wal/WAL file
pg_xact/ Transaction commit status data
postgresql.auto.conf Storage use alter system Modified configuration
postgresql.conf The configuration file
postmaster.opts Record the command line options of the last time the server was started
postmaster.pid The server pid file
原网站

版权声明
本文为[happytree001]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207061839087992.html