Labels

admin (1) aix (1) alert (1) always-on (2) Architecture (1) aws (3) Azure (1) backup (3) BI-DWH (10) Binary (3) Boolean (1) C# (1) cache (1) casting (3) cdc (1) certificate (1) checks (1) cloud (3) cluster (1) cmd (7) collation (1) columns (1) compilation (1) configurations (7) Connection-String (2) connections (6) constraint (6) copypaste (2) cpu (2) csv (3) CTE (1) data-types (1) datetime (23) db (547) DB2 (1) deadlock (2) Denali (7) device (6) dotNet (5) dynamicSQL (11) email (5) encoding (1) encryption (4) errors (124) excel (1) ExecutionPlan (10) extended events (1) files (7) FIPS (1) foreign key (1) fragmentation (1) functions (1) GCP (2) gMSA (2) google (2) HADR (1) hashing (3) in-memory (1) index (3) indexedViews (2) insert (3) install (10) IO (1) isql (6) javascript (1) jobs (11) join (2) LDAP (2) LinkedServers (8) Linux (15) log (6) login (1) maintenance (3) mariadb (1) memory (4) merge (3) monitoring (4) MSA (2) mssql (444) mssql2005 (5) mssql2008R2 (20) mssql2012 (2) mysql (36) MySQL Shell (5) network (1) NoSQL (1) null (2) numeric (9) object-oriented (1) offline (1) openssl (1) Operating System (4) oracle (7) ORDBMS (1) ordering (2) Outer Apply (1) Outlook (1) page (1) parameters (2) partition (1) password (1) Performance (103) permissions (10) pivot (3) PLE (1) port (4) PostgreSQL (14) profiler (1) RDS (3) read (1) Replication (12) restore (4) root (1) RPO (1) RTO (1) SAP ASE (48) SAP RS (20) SCC (4) scema (1) script (8) security (10) segment (1) server (1) service broker (2) services (4) settings (75) SQL (74) SSAS (1) SSIS (19) SSL (8) SSMS (4) SSRS (6) storage (1) String (35) sybase (57) telnet (2) tempdb (1) Theory (2) tips (120) tools (3) training (1) transaction (6) trigger (2) Tuple (2) TVP (1) unix (8) users (3) vb.net (4) versioning (1) windows (14) xml (10) XSD (1) zip (1)

PostgreSQL Architecture

 The physical structure of PostgreSQL consists of

  • Processes.
  • Shared memory.
  • Data files.

PostgreSQL Processes
  1. Postmaster (Daemon) Process
    1. The first process started when you start PostgreSQL.
    2. At startup it starts all other processes; performs recovery, initialize shared memory, and run background processes.
    3. It creates a backend process when there is a connection request from the client process.
    4. Postmaster process is the parent process of all processes.
  2. Background Processes
    1. List of Background processes:

      logger

      Write the error message to the log file.

      checkpointer

      When a checkpoint occurs, the dirty buffer is written to the file.

      writer

      Periodically writes the dirty buffer to a file.

      wal writer

      Write the WAL buffer to the WAL file.

      Autovacuum launcher

      Fork autovacuum worker when autovacuum is enabled.It is the responsibility of the autovacuum daemon to carry vacuum operations on bloated tables on demand

      archiver

      When in Archive.log mode, copy the WAL file to the specified directory.

      stats collector

      DBMS usage statistics such as session execution information ( pg_stat_activity ) and table usage statistical information ( pg_stat_all_tables ) are colle

  3. Backend Process
    1. Performs the query request of the user process and then transmits the result.
  4. Client Process
    1. Refers to the background process that is assigned for every backend user connection.
    2. Usually the postmaster process will fork a child process that is dedicated to serve a user connection.
Shared Memory
Shared Memory refers to the memory reserved for
  • Database caching
  • Transaction log caching.

The important elements in shared memory are

  • Shared Buffer
    • The purpose of Shared Buffer is to minimize DISK IO.
  • WAL buffers
    • A buffer that temporarily stores changes to the database (to the WAL files).
  • Temp buffers
    • Stores temporary tables

Data storage

The data is cached both in the operating system level and in the PostgreSQL level:

  • PostgreSQL buffer cache in shared memory.
  • OS data cache is the Write-Ahead Log (WAL).

In the case of a failure the contents of the RAM disappear and some data may be lost, which is unacceptable as it violates the durability property.

Therefore, during its operation PostgreSQL constantly writes the so-called Write-Ahead Log (WAL) to the disk.

This allows to re-perform lost operations and restore data in a consistent state.


Transaction logging - WAL

WAL = Write-Ahead Log.

Each transaction is written to the WAL File before it written to the data files on the disk (as described above).

WAL files stored in \data\pg_wal.

A single information unit within a WAL file is called a log record.

“Segment” is sometimes used as synonym for WAL file.

SQL Server LDF files ~ Oracle REDO files ~ PostgreSQL WAL files


PostgreSQL main terms

tuple is a synonym for a row.

relation is a synonym for a table.

filenode is an id which represent a reference to a table or an index.

PostgreSQL database Cluster

  • It is not a collection of servers,
  • It is a collection of databases managed by a single server


PostgreSQL Architecture useful links

No comments:

Post a Comment