Postgres pro standard de documentare 9

Această secțiune descrie formatul de stocare la nivel de fișier și de director.

fișierele de configurare și fișierele de date utilizate de către cluster de baze de date, stocate în mod tradițional împreună în directorul de date clusterului, în mod obișnuit numit PGDATA (în numele variabilei de mediu, care poate fi folosit pentru a defini). În mod obișnuit, PGDATA se află în / var / lib / pgsql / data. Pe aceeași mașină poate fi o mulțime de clustere, gestionate de diferite instanțe ale serverului.

Directorul PGDATA conține mai multe subdirectoare și fișiere de control, așa cum se arată în Tabelul 63-1. În plus față de aceste elemente necesare, fișierele de configurare a cluster-ului sunt postgresql.conf. pg_hba.conf și pg_ident.conf sunt stocate în mod tradițional în PGDATA. deși pot fi plasate în altă parte.

Fișier care conține numărul versiunii principale a Postgres Pro

O subdirectoră care conține subdirectoare pentru fiecare bază de date

Un subdirector care conține tabele comune de cluster, cum ar fi pg_database

O subdirectoră care conține date de timp pentru tranzacție

Un subdirector care conține date despre starea unei tranzacții

O subdirectoră care conține fișierele utilizate de subsistemul de memorie partajată dinamic

O subdirectoră care conține date de stare pentru decodare logică

Un subdirector care conține date despre starea multithreading (utilizat pentru blocarea rândului partajat)

Un subdirector care conține date de stare de ascultare și notificare (LISTEN / NOTIFY)

Un fișier care scrie parametrii liniei de comandă cu care serverul a fost ultima dată pornit

Pentru fiecare bază de date din cluster, există un subdirector în interiorul PGDATA / bază. numit în baza de date OID în pg_database. Acest subdirector implicit este locul unde sunt stocate fișierele bazei de date; în special, sunt stocate cataloagele sale de sistem.

Rețineți că, deși numărul fișierului din tabel coincide adesea cu OID, nu se întâmplă întotdeauna; unele operații, de exemplu, TRUNCATE. Reindexați. CLUSTER și unele forme ale comenzii ALTER TABLE pot schimba numărul fișierului, dar în același timp salvează OID-ul. Nu vă așteptați ca numărul nodului de fișier și codul OID al tabelului să fie identice. În plus, pentru unele directoare de sistem, inclusiv pg_class. pg_class .relfilenode conține zero. Numărul real al fișierului pentru acestea este stocat într-o structură de date de nivel scăzut și poate fi obținut utilizând funcția pg_relation_filenode ().

Când volumul unui tabel sau al unui indice depășește 1 GB, acestea sunt împărțite în segmente cu dimensiunea unui gigabyte. Fișierul primului segment este numit de numărul nodului de fișier (filenode); segmente ulterioare sunt nume filenode.1, filenode.2 și așa mai departe. d. Prin această organizare, stocare este nici o problemă pe platforme care au restricții privind dimensiunea fișierelor. (De fapt, 1 GB este o segmente de dimensiuni standard. Dimensiunea segmentului poate fi modificat cu ajutorul parametrului de configurare --with-SEGSIZE la crearea Postgres Pro.) În principiu, spațiu liber și hărți de vizibilitate pot ocupa, de asemenea, mai multe segmente, cu toate că în practică acest lucru este puțin probabil.

Un tabel a cărui coloane poate conține date mari va avea propriul tabel TOAST. Este destinat stocării unor valori prea mari pentru a fi stocate în rândurile mesei. Masa principală este asociată cu tabela TOAST (dacă există) prin pg_class .reltoastrelid. Pentru detalii, consultați secțiunea 63.2.

Funcția pg_relation_filepath () afișează calea completă (PGDATA relativă) pentru orice relație. Adesea, acest lucru elimină nevoia de a-și aminti multe dintre regulile de mai sus. Dar trebuie să ne amintim că această funcție dă doar numele primului segment al raportului stratului de bază, t. E. Poate fi necesar să adăugați un număr și / sau _fsm segment. _vm sau _init. pentru a găsi toate fișierele asociate cu relația.

Fișierele temporare (pentru operații cum ar fi sortarea volumul de date mai mari decât pot încăpea în memorie) se află la PGDATA / de bază / pgsql_tmp sau subdirector în interiorul catalog pgsql_tmp spațiu tabelă, în cazul în care există un spațiu tabelă specific, altul decât pg_default. Numele fișierului temporar are forma pgsql_tmpPPP .NNN. unde PPP este PID-ul procesului de server, iar NNN servește la separarea diferitelor fișiere temporare ale acestui proces server.