Megosztott PostgreSQL-memória ismertetése

Befejezett

A PostgreSQL a következőként besorolható memóriát használja:

  • Helyi memória – minden folyamathoz lefoglalva
  • Megosztott memória – minden folyamat használja

Helyi memória

A PostgreSQL minden folyamatához memória szükséges a lekérdezések feldolgozásához. A következő kiszolgálóparaméterek lehetővé teszik a memóriahasználat meghatározását:

A work_mem határozza meg a memóriát, amely a rangsorolási tömbök rendezéséhez, valamint az ORDER BY és a DISTINCT műveletekhez szükséges. Ez a paraméter határozza meg a belső rendezési műveletekhez és kivonattáblákhoz rendelkezésre álló memória mennyiségét. Ha nagy mennyiségű rendelkezésre álló memóriával rendelkezik, és a számítási feladat lekérdezései összetett rendezéssel rendelkeznek, a paraméter értékének növelése javíthatja a teljesítményt azáltal, hogy nagyobb vizsgálatot tesz lehetővé a memóriában, mielőtt a lemezre ömlik.

Egy összetett lekérdezésnek azonban több rendezési és kivonatolási művelete is lehet, amelyek egyidejűleg futnak. Minden művelet annyi memóriát használ, amennyit ez az érték megenged, mielőtt lemezalapú ideiglenes fájlokba ír. Egy foglalt rendszeren ezért a teljes memóriahasználat sokszorosa egy adott work_mem paraméternek.

Az érték finomhangolásához használja a Total RAM * 0,25/ max_connections kezdőértéket.

maintenance_work_mem a vacuum és a reindex által igényelt memória. Ez a paraméter határozza meg a belső rendezési műveletekhez és kivonattáblákhoz rendelkezésre álló memória mennyiségét. Az alapértelmezett érték 64 KB, de az érték növelése javítja a vákuumozás teljesítményét.

autovacuum_work_mem beállítja az egyes autovakuum-folyamatok által használandó memória maximális méretét.

temp_buffers az ideiglenes táblák tárolására szolgáló memóriát határozza meg. Ez a paraméter az egyes adatbázis-munkamenetek által használt ideiglenes pufferek maximális számát állítja be.

effective_cache_size meghatározza az operációs rendszer és az adatbázis lemezeinek gyorsítótárazásához rendelkezésre álló memória mennyiségét. A PostgreSQL-lekérdezéstervező határozza meg, hogy a memória le van-e kötve a RAM-ban. Az indexvizsgálatokat valószínűleg magasabb értékeken használják; ellenkező esetben a rendszer szekvenciális vizsgálatokat használ, ha az érték alacsony.

Állítsa effective_cache_size a gép teljes RAM-jának 50% értékére.

Megosztott memória

A rendszer indításkor lefoglalja a megosztott memóriát. A megosztott memória a következő célokra használható:

shared_buffers meghatározza a kiszolgáló által használt megosztott memóriapuffereket. A PostgreSQL betölti a táblák és indexek lapjait az állandó tárolóból egy megosztott pufferkészletbe, majd a memóriában dolgozik rajtuk. Ez a megosztott pufferkészlet a kiszolgáló által használt megosztott memória fő összetevője. Az alapértelmezett érték 128 MB (a számítási szinttől függően). Ha úgy dönt, hogy több memóriát foglal le, újra kell indítania a kiszolgálót.

wal_buffers a megosztott memóriában lévő lemezoldalpufferek számát határozza meg az előre írt naplózáshoz (WAL) az állandó tárolóba való írás előtt.

Összefoglalva, a memóriával kapcsolatos fontos kiszolgálóparaméterek a következők:

  • megosztott pufferek
  • munka_memória
  • effective_cache_size