postgres architecture - ghdrako/doc_snipets GitHub Wiki
Architektura PostgreSQL jest wieloprocesowa, a nie wielowątkowa.Oznacza to, że każdy proces PostgreSQL jest wykonywany w odizolowanym kontekście pamięci, a komunikacja między tymi procesami opiera się na mechanizmach układu międzyprocesowego: semaforach, obszarach pamięci współdzielonej, gniazdach. Kontrastuje to z architekturą wielowątkową, w której cały silnik działa w jednym procesie, z wieloma wątkami egzekucyjnymi (kontekstami), gdzie wszystko jest domyślnie współdzielone.
Główną zaletą tej architektury wieloprocesowej jest stabilność: jeden proces, w przypadku problemu, uszkadza tylko pamięć (lub pamięć współdzieloną), awaria jednego procesu nie wpływa bezpośrednio na innych. Jego główną wadą jest statyczna alokacja zasobów pamięci współdzielonej: nie są one do wielkości gorącej wielkości.
Wszystkie procesy PostgreSQL uzyskują dostęp do obszaru „wspólnej pamięci”. Obszar ten zawiera informacje, które należy udostępnić między klientami, takie jak pamięć podręczna danych, na przykład informacje o stanie każdej sesji.
PostgreSQL korzysta z architektury klienta i serwera. Połączymy się tylko z PostgreSQL za pomocą dobrze zdefiniowanego protokołu, nigdy nie uzyskujemy dostępu do plików danych.
# ps f -e --format=pid,command | grep -E "postgres|postmaster"
W Ubuntu głowny proces nie nazywa sie postmaster tylko postgres.
- postmaster - jest odpowiedzialny za nadzorowanie innych procesów, a także biorąc pod uwagę połączenia przychodzące.
- background writer and checkpointer - realizuja zapisy w tle
- walwriter - pisze z wyprzedzeniem do dziennika transakcji, w celu ograniczenia pracy operacji COMMIT.
- autovacuum launcher - zarzadza wykonywaniem operacji autovacuum
Cluster > Catalog > Schema > Table > Columns & Rows
So in both Postgres and the SQL Standard we have this containment hierarchy:
- A computer may have one cluster or multiple.
- A database server is a cluster.
- A cluster has catalogs. ( Catalog = Database )
- Catalogs have schemas. (Schema = namespace of tables, and security boundary)
- Schemas have tables.
- Tables have rows.
- Rows have values, defined by columns. Those values are the business data your apps and users care about such as person's name, invoice due date, product price, gamer’s high score. The column defines the data type of the values (text, date, number, and so on).
Diagram showing nesting boxes representing how connecting on a port gets you to cluster (a database server) which contains one or more Catalogs (a database) each of which contains one or more Schemas (a namespace) each of which contains tables each of which has rows.
PostgreSQL Process Architecture
All the database background tasks are performed by the PostgreSQL Postmaster process. The PostgreSQL server background tasks are: security and access manager, transaction processing manager, locking manager, query processing manager, I/O storage manager, write ahead log (WAL) manager, vacuum, and free space manager.
The database table data resides in the data directory, in default and non-default locations. For non-default tablespace, a symbolic link is created, which is used during creation of the tablespace.