Megosztás a következőn keresztül:


Erőforrás-használat / Memória

autovacuum_work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az egyes autovacuum-feldolgozó folyamatok által használandó maximális memóriát.
Adattípus egész szám
Alapértelmezett érték -1
Engedélyezett értékek -1-2097151
Paraméter típusa dynamic
Documentation autovacuum_work_mem

commit_timestamp_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a véglegesítési időbélyeg-gyorsítótárhoz használt dedikált pufferkészlet méretét. Adja meg a 0 értéket, ha ezt az értéket a shared_buffers törtrészeként kell meghatározni.
Adattípus egész szám
Alapértelmezett érték 1024
Engedélyezett értékek 0-131072
Paraméter típusa statikus
Documentation commit_timestamp_buffers

dynamic_megosztott_memória_típus

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Kiválasztja a használt dinamikus megosztott memória implementációját.
Adattípus enumerálás
Alapértelmezett érték posix
Engedélyezett értékek posix
Paraméter típusa csak olvasható
Documentation dinamikus_megosztott_memória_típus

hash_mem_multiplier (hash-memória-szorzó)

Attribute Érték
Kategória Erőforrás-használat / Memória
Description A kivonattáblákhoz használandó "work_mem" többszöröse.
Adattípus Numerikus
Alapértelmezett érték 2
Engedélyezett értékek 1-1000
Paraméter típusa dynamic
Documentation hash_mem_multiplier

huge_pages

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Hatalmas oldalak használata Linuxon vagy Windowson.
Adattípus enumerálás
Alapértelmezett érték try
Engedélyezett értékek on,off,try
Paraméter típusa statikus
Documentation nagy_oldalak

Description

A hatalmas lapok olyan funkciók, amelyek lehetővé teszik a memória nagyobb blokkokban való kezelését. A szabványos 4 KB-os oldalak helyett általában legfeljebb 2 MB méretű blokkokat kezelhet.

A hatalmas oldalak használata olyan teljesítménybeli előnyöket kínálhat, amelyek hatékonyan ki tudják kapcsolni a processzort:

  • Csökkentik a memóriakezelési feladatokhoz, például kevesebb fordítási lookaside pufferhez (TLB) kapcsolódó többletterhelést.
  • Lerövidítik a memóriakezeléshez szükséges időt.

A PostgreSQL-ben a hatalmas oldalakat csak a megosztott memóriaterületen használhatja. A megosztott memóriaterület jelentős része megosztott pufferekhez van lefoglalva.

Egy másik előnye, hogy a hatalmas oldalak megakadályozzák a megosztott memóriaterület lemezre való felcserélését, ami tovább stabilizálja a teljesítményt.

Recommendations

  • A jelentős memóriaerőforrásokkal rendelkező kiszolgálók esetében kerülje a hatalmas lapok letiltását. A hatalmas lapok letiltása ronthatja a teljesítményt.
  • Ha egy kisebb kiszolgálóval kezd, amely nem támogatja a hatalmas oldalakat, de várhatóan felskáláz egy olyan kiszolgálóra, amely igen, tartsa a beállítást huge_pages a zökkenőmentes átmenet és az TRY optimális teljesítmény érdekében.

Azure-specifikus megjegyzések

A négy vagy több virtuális processzormaggal rendelkező kiszolgálók esetében a hatalmas lapok automatikusan lefoglalásra kerülnek az alapul szolgáló operációs rendszerből. A szolgáltatás nem érhető el négynél kevesebb virtuális maggal rendelkező kiszolgálók esetében. A hatalmas lapok száma automatikusan módosul, ha a megosztott memória beállításai módosulnak, beleértve a shared_buffersmódosításokat is.

huge_page_size

Attribute Érték
Kategória Erőforrás-használat / Memória
Description A kérendő hatalmas oldal mérete.
Adattípus egész szám
Alapértelmezett érték 0
Engedélyezett értékek 0
Paraméter típusa csak olvasható
Documentation huge_page_size

io_combine_limit

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Az adatolvasások és írások méretének korlátozása.
Adattípus egész szám
Alapértelmezett érték 16
Engedélyezett értékek 1-128
Paraméter típusa dynamic
Documentation io_combine_limit

io_max_combine_limit

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Az io_combine_limit korlátozása kiszolgálószinten.
Adattípus egész szám
Alapértelmezett érték 16
Engedélyezett értékek 1-128
Paraméter típusa dynamic
Documentation io_max_combine_limit

io_max_egyidejűség

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Az egy folyamat által egyidejűleg végrehajtható IOS-ek maximális száma.
Adattípus egész szám
Alapértelmezett érték 64
Engedélyezett értékek -1-1024
Paraméter típusa statikus
Documentation io_max_concurrency

io_method

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Kiválasztja az aszinkron I/O végrehajtásának módját.
Adattípus enumerálás
Alapértelmezett érték worker
Engedélyezett értékek worker,sync
Paraméter típusa statikus
Documentation io_method

io_workers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Az I/O feldolgozói folyamatok száma io_method=feldolgozó esetén.
Adattípus egész szám
Alapértelmezett érték 3
Engedélyezett értékek 1-32
Paraméter típusa dynamic
Documentation io_workers

logical_decoding_work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a logikai dekódoláshoz használandó memória maximális méretét. Ennyi memóriát használhatnak az egyes belső átrendezési pufferek, mielőtt a lemezre kerülnek.
Adattípus egész szám
Alapértelmezett érték 65536
Engedélyezett értékek 64-2147483647
Paraméter típusa dynamic
Documentation logical_decoding_work_mem

karbantartási_munka_memória

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a karbantartási műveletekhez használandó memória maximális méretét. Ide tartoznak az olyan műveletek, mint a VACUUM és a CREATE INDEX.
Adattípus egész szám
Alapértelmezett érték A kiszolgáló számára lefoglalt erőforrásoktól (virtuális magoktól, RAM-októl vagy lemezterülettől) függ.
Engedélyezett értékek 1024-2097151
Paraméter típusa dynamic
Documentation maintenance_work_mem

Description

maintenance_work_mem egy konfigurációs paraméter a PostgreSQL-ben. Ez szabályozza a karbantartási műveletekhez lefoglalt memória mennyiségét, például VACUUM: , CREATE INDEXés ALTER TABLE. Ellentétben work_mema lekérdezési műveletek memóriafoglalásával, maintenance_work_mem az adatbázis struktúráját karbantartó és optimalizáló feladatokhoz van fenntartva.

! [MEGJEGYZÉS] A túlzottan agresszív értékek beállítása maintenance_work_mem időnként memóriahibahoz vezethet a rendszerben. A paraméter módosítása előtt rendkívül fontos tisztában lenni a kiszolgálón rendelkezésre álló memória mennyiségével és az egyidejű műveletek számával, amelyek memóriát foglalhatnak le a korábban ismertetett feladatokhoz.

Kulcsfontosságú pontok

  • Vákuummemória sapka: Ha növelni szeretné az elhalt tuple-ok eltávolításának sebességét, vegye figyelembe, hogy maintenance_work_mem az elhalt tuple-azonosítók gyűjtésére beépített korlátozás vonatkozik. Ehhez a folyamathoz legfeljebb 1 GB memóriát használhat.
  • A memória elkülönítése az autovacuumhoz: A beállítással autovacuum_work_mem szabályozhatja a memóriát, amelyet az autovacuum-műveletek egymástól függetlenül használnak. Ez a beállítás az maintenance_work_mem egy része. Eldöntheti, hogy az autovacuum mennyi memóriát használ anélkül, hogy befolyásolná az egyéb karbantartási feladatok és adatdefiníciós műveletek memóriafoglalását.

Azure-specifikus megjegyzések

A kiszolgálóparaméter alapértelmezett értékét a maintenance_work_mem rugalmas Azure Database for PostgreSQL-kiszolgáló példányának kiépítésekor számítja ki a rendszer a számításhoz kiválasztott terméknév alapján. A rugalmas kiszolgálót támogató számítás termékkijelölésének későbbi módosítása nem befolyásolja az adott példány kiszolgálóparaméterének alapértelmezett értékét maintenance_work_mem .

Minden alkalommal, amikor módosítja a példányhoz rendelt terméket, a maintenance_work_mem paraméter értékét is az alábbi képlet értékei alapján kell módosítania.

Az érték maintenance_work_mem kiszámításához használt képlet az .(long)(82.5 * ln(memoryGiB) + 40) * 1024

Az előző képlet alapján az alábbi táblázat felsorolja azokat az értékeket, amelyekre a kiszolgálóparaméter a kiosztott memória mennyiségétől függően be van állítva:

Memória mérete karbantartási_munka_memória
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GiB 332 800 KiB
48 GiB 367 616 KiB
64 GiB 392,192 KiB
80 GiB 410 624 KiB
128 GiB 450 560 KiB
160 GiB 468 992 KiB
192 GiB 484 352 KiB
256 GiB 508,928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_előkészített_tranzakciók

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az egyidejűleg előkészített tranzakciók maximális számát.
Adattípus egész szám
Alapértelmezett érték 0
Engedélyezett értékek 0-262143
Paraméter típusa statikus
Documentation max_prepared_transactions

max_stack_depth

Attribute Érték
Kategória Erőforrás-használat / Memória
Description A maximális veremmélység beállítása kilobájtban.
Adattípus egész szám
Alapértelmezett érték 2048
Engedélyezett értékek 2048
Paraméter típusa csak olvasható
Documentation max_stack_depth

min_dynamic_shared_memory

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Az indításkor fenntartott dinamikus megosztott memória mennyisége.
Adattípus egész szám
Alapértelmezett érték 0
Engedélyezett értékek 0
Paraméter típusa csak olvasható
Documentation min_dynamic_shared_memory

multixact_member_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a MultiXact-taggyorsítótárhoz használt dedikált pufferkészlet méretét.
Adattípus egész szám
Alapértelmezett érték 32
Engedélyezett értékek 16-131072
Paraméter típusa statikus
Documentation multixact_member_buffers

multixact_offset_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a MultiXact eltolási gyorsítótárhoz használt dedikált pufferkészlet méretét.
Adattípus egész szám
Alapértelmezett érték 16
Engedélyezett értékek 16-131072
Paraméter típusa statikus
Documentation multixact_offset_buffers

notify_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a LISTEN/NOTIFY üzenetgyorsítótárhoz használt dedikált pufferkészlet méretét.
Adattípus egész szám
Alapértelmezett érték 16
Engedélyezett értékek 16-131072
Paraméter típusa statikus
Documentation notify_buffers

szerializálható_pufferek

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a szerializálható tranzakciós gyorsítótárhoz használt dedikált pufferkészlet méretét.
Adattípus egész szám
Alapértelmezett érték 32
Engedélyezett értékek 16-131072
Paraméter típusa statikus
Documentation serializable_buffers

shared_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a kiszolgáló által használt megosztott memóriapufferek számát.
Adattípus egész szám
Alapértelmezett érték A kiszolgáló számára lefoglalt erőforrásoktól (virtuális magoktól, RAM-októl vagy lemezterülettől) függ.
Engedélyezett értékek 16-1073741823
Paraméter típusa statikus
Documentation shared_buffers

Description

A shared_buffers konfigurációs paraméter határozza meg a PostgreSQL-adatbázis számára az adatok puffereléséhez lefoglalt rendszermemória mennyiségét. Központi memóriakészletként szolgál, amely minden adatbázis-folyamat számára elérhető.

Amikor adatokra van szükség, az adatbázis-folyamat először ellenőrzi a megosztott puffert. Ha a szükséges adatok megtalálhatók, gyorsan lekérésre kerülnek, és elkerülik az időigényesebb lemezolvasást. A megosztott pufferek közvetítőként szolgálnak az adatbázis-folyamatok és a lemez között, és hatékonyan csökkentik a szükséges I/O-műveletek számát.

Azure-specifikus megjegyzések

A kiszolgálóparaméter alapértelmezett értékét a shared_buffers rugalmas Azure Database for PostgreSQL-kiszolgáló példányának kiépítésekor számítja ki a rendszer a számításhoz kiválasztott terméknév alapján. A rugalmas kiszolgálót támogató számítás termékkijelölésének későbbi változásai nem befolyásolják az adott példány kiszolgálóparaméterének alapértelmezett értékét shared_buffers .

Minden alkalommal, amikor módosítja a példányhoz rendelt terméket, a paraméter értékét shared_buffers is módosítania kell az alábbi képletek értékeinek megfelelően.

Legfeljebb 2 GiB memóriával rendelkező virtuális gépek esetén az érték shared_buffers kiszámításához használt képlet az memoryGib * 16384.

A 2 GiB-nél nagyobb virtuális gépek esetében az érték shared_buffers kiszámításához használt képlet az memoryGib * 32768.

Az előző képlet alapján az alábbi táblázat felsorolja azokat az értékeket, amelyekre a kiszolgálóparaméter a kiosztott memória mennyiségétől függően be van állítva:

Memória mérete shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GiB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GiB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

megosztott_memória_típus

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Kiválasztja a fő megosztott memóriaterülethez használt megosztott memória implementációját.
Adattípus enumerálás
Alapértelmezett érték mmap
Engedélyezett értékek mmap
Paraméter típusa csak olvasható
Documentation megosztott_memória_típus

subtransaction_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az altranszmitálási gyorsítótárhoz használt dedikált pufferkészlet méretét. Adja meg a 0 értéket, ha ezt az értéket a shared_buffers törtrészeként kell meghatározni.
Adattípus egész szám
Alapértelmezett érték 1024
Engedélyezett értékek 0-131072
Paraméter típusa statikus
Documentation subtransaction_buffers

temp_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az egyes munkamenetek által használt ideiglenes pufferek maximális számát.
Adattípus egész szám
Alapértelmezett érték 1024
Engedélyezett értékek 100-1073741823
Paraméter típusa dynamic
Documentation temp_buffers

transaction_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a dedikált pufferkészlet méretét a tranzakciós állapot gyorsítótárhoz. Adja meg a 0 értéket, ha ezt az értéket a shared_buffers törtrészeként kell meghatározni.
Adattípus egész szám
Alapértelmezett érték 1024
Engedélyezett értékek 0-131072
Paraméter típusa statikus
Documentation transaction_buffers

vacuum_buffer_usage_limit

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a pufferkészlet méretét a VACUUM, az ANALYZE és az autovacuum esetében.
Adattípus egész szám
Alapértelmezett érték 2048
Engedélyezett értékek 0-16777216
Paraméter típusa dynamic
Documentation vacuum_buffer_usage_limit

work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a lekérdezési munkaterületekhez használandó memória maximális méretét. Ennyi memóriát használhatnak az egyes belső rendezési műveletek és kivonattáblák, mielőtt ideiglenes lemezfájlokra váltanak.
Adattípus egész szám
Alapértelmezett érték 4096
Engedélyezett értékek 4096-2097151
Paraméter típusa dynamic
Documentation work_mem

Description

A work_mem PostgreSQL paramétere szabályozza az egyes belső műveletekhez lefoglalt memória mennyiségét az egyes adatbázis-munkamenetek magánmemóriája területén. Ilyen műveletek például a rendezés és a kivonatolás.

A megosztott pufferek, amelyek a megosztott memóriaterületen vannak, ellentétben a work_mem egyenkénti munkamenet vagy lekérdezés privát memóriaterében van lefoglalva. A megfelelő work_mem méret beállításával jelentősen javíthatja ezeknek a műveleteknek a hatékonyságát, és csökkentheti az ideiglenes adatok lemezre írásának szükségességét.

Kulcsfontosságú pontok

  • Privát kapcsolati memória: work_mem az egyes adatbázis-munkamenetek által használt magánmemória része. Ez a memória különbözik a használt megosztott memóriaterülettől shared_buffers .
  • Lekérdezésspecifikus használat: Nem minden munkamenetet vagy lekérdezést használ work_mem. Egyszerű lekérdezések, mint például SELECT 1, valószínűleg nem igényelnek work_mem. Az összetett lekérdezések azonban, amelyek olyan műveleteket foglalnak magukban, mint a rendezés vagy a kivonatolás, egy vagy több work_mem adattömböt fogyaszthatnak.
  • Párhuzamos műveletek: Több párhuzamos háttérrendszerre kiterjedő lekérdezések esetén minden háttérrendszer egy vagy több adattömbet work_memhasználhat.

Monitorozás és work_mem módosítása

Elengedhetetlen a rendszer teljesítményének folyamatos monitorozása és szükség szerinti módosítása work_mem , elsősorban akkor, ha a rendezési vagy kivonatolási műveletekhez kapcsolódó lekérdezés-végrehajtási idő lassú. A teljesítmény monitorozásának módjai az Azure Portalon elérhető eszközökkel:

  • Lekérdezési teljesítményelemzés: Az ideiglenes fájlokat létrehozó lekérdezések azonosításához tekintse meg a leggyakoribb lekérdezéseket ideiglenes fájlok lapján. Ez a helyzet arra utal , hogy növelni kell a növekedést work_mem.
  • Hibaelhárítási útmutatók: A hibaelhárítási útmutatók Magas ideiglenes fájlok lapján azonosíthatja a problémás lekérdezéseket.
Granuláris beállítás

A paraméter kezelése work_mem során gyakran hatékonyabb egy részletes beállítási módszer alkalmazása a globális érték beállítása helyett. Ez a megközelítés biztosítja, hogy a memóriát körültekintően a folyamatok és a felhasználók konkrét igényei alapján foglalja le. Emellett minimálisra csökkenti a memóriahiányból adódó problémák kockázatát. Az alábbiak szerint végezheti el a következő lépéseket:

  • Felhasználói szint: Ha egy adott felhasználó elsősorban aggregációs vagy jelentéskészítési feladatokban vesz részt, amelyek memóriaigényesek, fontolja meg az adott felhasználó értékének work_mem testreszabását. ALTER ROLE A parancs használatával javíthatja a felhasználó műveleteinek teljesítményét.

  • Függvény-/eljárásszint: Ha bizonyos függvények vagy eljárások jelentős ideiglenes fájlokat hoznak létre, előnyös lehet az work_mem érték növelése az adott függvény vagy eljárás szintjén. Használja a ALTER FUNCTION vagy ALTER PROCEDURE parancsot, hogy pontosabban lefoglaljon több memóriát ezekhez a műveletekhez.

  • Adatbázisszint: Ha work_mem csak bizonyos adatbázisok hoznak létre nagy mennyiségű ideiglenes fájlt, módosítsa az adatbázis szintjén.

  • Globális szint: Ha a rendszer elemzése azt mutatja, hogy a lekérdezések többsége kis ideiglenes fájlokat hoz létre, míg csak kevesen hoznak létre nagy fájlokat, érdemes lehet globálisan növelni az work_mem értéket. Ez a művelet megkönnyíti a legtöbb lekérdezés feldolgozását a memóriában, így elkerülheti a lemezalapú műveleteket, és javíthatja a hatékonyságot. Azonban mindig legyen óvatos, és figyelje a kiszolgáló memóriakihasználtságát, hogy képes legyen kezelni a megnövekedett work_mem értéket.

A rendezési műveletek minimális work_mem értékének meghatározása

Ha meg szeretné keresni egy adott lekérdezés minimális work_mem értékét, különösen azt, amely ideiglenes lemezfájlokat hoz létre a rendezési folyamat során, először a lekérdezés végrehajtása során létrehozott ideiglenes fájlméretet kell figyelembe vennie. Ha például egy lekérdezés 20 MB-os ideiglenes fájlt hoz létre:

  1. Csatlakozzon az adatbázishoz a psql vagy az előnyben részesített PostgreSQL-ügyfél használatával.
  2. Állítson be egy 20 MB-nál valamivel nagyobb kezdeti work_mem értéket a további fejlécek számba vételéhez a memóriában történő feldolgozáskor. Használjon egy parancsot, például: SET work_mem TO '25MB'.
  3. Futtassa EXPLAIN ANALYZE a problémás lekérdezést ugyanabban a munkamenetben.
  4. Tekintse át a kimenetet "Sort Method: quicksort Memory: xkB". Ha jelzi "external merge Disk: xkB", növelje az work_mem értéket lépésenként, és tesztelje újra, amíg meg nem jelenik "quicksort Memory". A "quicksort Memory" megjelenése jelzi, hogy a lekérdezés most már a memóriában működik.
  5. Miután meghatározta az értéket ezzel a módszerrel, globálisan vagy részletesebb szinteken (a korábban leírtak szerint) alkalmazhatja a működési igényeinek megfelelően.

autovacuum_work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az egyes autovacuum-feldolgozó folyamatok által használandó maximális memóriát.
Adattípus egész szám
Alapértelmezett érték -1
Engedélyezett értékek -1-2097151
Paraméter típusa dynamic
Documentation autovacuum_work_mem

commit_timestamp_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a véglegesítési időbélyeg-gyorsítótárhoz használt dedikált pufferkészlet méretét. Adja meg a 0 értéket, ha ezt az értéket a shared_buffers törtrészeként kell meghatározni.
Adattípus egész szám
Alapértelmezett érték 1024
Engedélyezett értékek 0-131072
Paraméter típusa statikus
Documentation commit_timestamp_buffers

dynamic_megosztott_memória_típus

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Kiválasztja a használt dinamikus megosztott memória implementációját.
Adattípus enumerálás
Alapértelmezett érték posix
Engedélyezett értékek posix
Paraméter típusa csak olvasható
Documentation dinamikus_megosztott_memória_típus

hash_mem_multiplier (hash-memória-szorzó)

Attribute Érték
Kategória Erőforrás-használat / Memória
Description A kivonattáblákhoz használandó "work_mem" többszöröse.
Adattípus Numerikus
Alapértelmezett érték 2
Engedélyezett értékek 1-1000
Paraméter típusa dynamic
Documentation hash_mem_multiplier

huge_pages

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Hatalmas oldalak használata Linuxon vagy Windowson.
Adattípus enumerálás
Alapértelmezett érték try
Engedélyezett értékek on,off,try
Paraméter típusa statikus
Documentation nagy_oldalak

Description

A hatalmas lapok olyan funkciók, amelyek lehetővé teszik a memória nagyobb blokkokban való kezelését. A szabványos 4 KB-os oldalak helyett általában legfeljebb 2 MB méretű blokkokat kezelhet.

A hatalmas oldalak használata olyan teljesítménybeli előnyöket kínálhat, amelyek hatékonyan ki tudják kapcsolni a processzort:

  • Csökkentik a memóriakezelési feladatokhoz, például kevesebb fordítási lookaside pufferhez (TLB) kapcsolódó többletterhelést.
  • Lerövidítik a memóriakezeléshez szükséges időt.

A PostgreSQL-ben a hatalmas oldalakat csak a megosztott memóriaterületen használhatja. A megosztott memóriaterület jelentős része megosztott pufferekhez van lefoglalva.

Egy másik előnye, hogy a hatalmas oldalak megakadályozzák a megosztott memóriaterület lemezre való felcserélését, ami tovább stabilizálja a teljesítményt.

Recommendations

  • A jelentős memóriaerőforrásokkal rendelkező kiszolgálók esetében kerülje a hatalmas lapok letiltását. A hatalmas lapok letiltása ronthatja a teljesítményt.
  • Ha egy kisebb kiszolgálóval kezd, amely nem támogatja a hatalmas oldalakat, de várhatóan felskáláz egy olyan kiszolgálóra, amely igen, tartsa a beállítást huge_pages a zökkenőmentes átmenet és az TRY optimális teljesítmény érdekében.

Azure-specifikus megjegyzések

A négy vagy több virtuális processzormaggal rendelkező kiszolgálók esetében a hatalmas lapok automatikusan lefoglalásra kerülnek az alapul szolgáló operációs rendszerből. A szolgáltatás nem érhető el négynél kevesebb virtuális maggal rendelkező kiszolgálók esetében. A hatalmas lapok száma automatikusan módosul, ha a megosztott memória beállításai módosulnak, beleértve a shared_buffersmódosításokat is.

huge_page_size

Attribute Érték
Kategória Erőforrás-használat / Memória
Description A kérendő hatalmas oldal mérete.
Adattípus egész szám
Alapértelmezett érték 0
Engedélyezett értékek 0
Paraméter típusa csak olvasható
Documentation huge_page_size

io_combine_limit

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Az adatolvasások és írások méretének korlátozása.
Adattípus egész szám
Alapértelmezett érték 16
Engedélyezett értékek 16
Paraméter típusa csak olvasható
Documentation io_combine_limit

logical_decoding_work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a logikai dekódoláshoz használandó memória maximális méretét. Ennyi memóriát használhatnak az egyes belső átrendezési pufferek, mielőtt a lemezre kerülnek.
Adattípus egész szám
Alapértelmezett érték 65536
Engedélyezett értékek 64-2147483647
Paraméter típusa dynamic
Documentation logical_decoding_work_mem

karbantartási_munka_memória

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a karbantartási műveletekhez használandó memória maximális méretét. Ide tartoznak az olyan műveletek, mint a VACUUM és a CREATE INDEX.
Adattípus egész szám
Alapértelmezett érték A kiszolgáló számára lefoglalt erőforrásoktól (virtuális magoktól, RAM-októl vagy lemezterülettől) függ.
Engedélyezett értékek 1024-2097151
Paraméter típusa dynamic
Documentation maintenance_work_mem

Description

maintenance_work_mem egy konfigurációs paraméter a PostgreSQL-ben. Ez szabályozza a karbantartási műveletekhez lefoglalt memória mennyiségét, például VACUUM: , CREATE INDEXés ALTER TABLE. Ellentétben work_mema lekérdezési műveletek memóriafoglalásával, maintenance_work_mem az adatbázis struktúráját karbantartó és optimalizáló feladatokhoz van fenntartva.

! [MEGJEGYZÉS] A túlzottan agresszív értékek beállítása maintenance_work_mem időnként memóriahibahoz vezethet a rendszerben. A paraméter módosítása előtt rendkívül fontos tisztában lenni a kiszolgálón rendelkezésre álló memória mennyiségével és az egyidejű műveletek számával, amelyek memóriát foglalhatnak le a korábban ismertetett feladatokhoz.

Kulcsfontosságú pontok

  • Vákuummemória sapka: Ha növelni szeretné az elhalt tuple-ok eltávolításának sebességét, vegye figyelembe, hogy maintenance_work_mem az elhalt tuple-azonosítók gyűjtésére beépített korlátozás vonatkozik. Ehhez a folyamathoz legfeljebb 1 GB memóriát használhat.
  • A memória elkülönítése az autovacuumhoz: A beállítással autovacuum_work_mem szabályozhatja a memóriát, amelyet az autovacuum-műveletek egymástól függetlenül használnak. Ez a beállítás az maintenance_work_mem egy része. Eldöntheti, hogy az autovacuum mennyi memóriát használ anélkül, hogy befolyásolná az egyéb karbantartási feladatok és adatdefiníciós műveletek memóriafoglalását.

Azure-specifikus megjegyzések

A kiszolgálóparaméter alapértelmezett értékét a maintenance_work_mem rugalmas Azure Database for PostgreSQL-kiszolgáló példányának kiépítésekor számítja ki a rendszer a számításhoz kiválasztott terméknév alapján. A rugalmas kiszolgálót támogató számítás termékkijelölésének későbbi módosítása nem befolyásolja az adott példány kiszolgálóparaméterének alapértelmezett értékét maintenance_work_mem .

Minden alkalommal, amikor módosítja a példányhoz rendelt terméket, a maintenance_work_mem paraméter értékét is az alábbi képlet értékei alapján kell módosítania.

Az érték maintenance_work_mem kiszámításához használt képlet az .(long)(82.5 * ln(memoryGiB) + 40) * 1024

Az előző képlet alapján az alábbi táblázat felsorolja azokat az értékeket, amelyekre a kiszolgálóparaméter a kiosztott memória mennyiségétől függően be van állítva:

Memória mérete karbantartási_munka_memória
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GiB 332 800 KiB
48 GiB 367 616 KiB
64 GiB 392,192 KiB
80 GiB 410 624 KiB
128 GiB 450 560 KiB
160 GiB 468 992 KiB
192 GiB 484 352 KiB
256 GiB 508,928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_előkészített_tranzakciók

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az egyidejűleg előkészített tranzakciók maximális számát.
Adattípus egész szám
Alapértelmezett érték 0
Engedélyezett értékek 0-262143
Paraméter típusa statikus
Documentation max_prepared_transactions

max_stack_depth

Attribute Érték
Kategória Erőforrás-használat / Memória
Description A maximális veremmélység beállítása kilobájtban.
Adattípus egész szám
Alapértelmezett érték 2048
Engedélyezett értékek 2048
Paraméter típusa csak olvasható
Documentation max_stack_depth

min_dynamic_shared_memory

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Az indításkor fenntartott dinamikus megosztott memória mennyisége.
Adattípus egész szám
Alapértelmezett érték 0
Engedélyezett értékek 0
Paraméter típusa csak olvasható
Documentation min_dynamic_shared_memory

multixact_member_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a MultiXact-taggyorsítótárhoz használt dedikált pufferkészlet méretét.
Adattípus egész szám
Alapértelmezett érték 32
Engedélyezett értékek 16-131072
Paraméter típusa statikus
Documentation multixact_member_buffers

multixact_offset_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a MultiXact eltolási gyorsítótárhoz használt dedikált pufferkészlet méretét.
Adattípus egész szám
Alapértelmezett érték 16
Engedélyezett értékek 16-131072
Paraméter típusa statikus
Documentation multixact_offset_buffers

notify_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a LISTEN/NOTIFY üzenetgyorsítótárhoz használt dedikált pufferkészlet méretét.
Adattípus egész szám
Alapértelmezett érték 16
Engedélyezett értékek 16-131072
Paraméter típusa statikus
Documentation notify_buffers

szerializálható_pufferek

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a szerializálható tranzakciós gyorsítótárhoz használt dedikált pufferkészlet méretét.
Adattípus egész szám
Alapértelmezett érték 32
Engedélyezett értékek 16-131072
Paraméter típusa statikus
Documentation serializable_buffers

shared_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a kiszolgáló által használt megosztott memóriapufferek számát.
Adattípus egész szám
Alapértelmezett érték A kiszolgáló számára lefoglalt erőforrásoktól (virtuális magoktól, RAM-októl vagy lemezterülettől) függ.
Engedélyezett értékek 16-1073741823
Paraméter típusa statikus
Documentation shared_buffers

Description

A shared_buffers konfigurációs paraméter határozza meg a PostgreSQL-adatbázis számára az adatok puffereléséhez lefoglalt rendszermemória mennyiségét. Központi memóriakészletként szolgál, amely minden adatbázis-folyamat számára elérhető.

Amikor adatokra van szükség, az adatbázis-folyamat először ellenőrzi a megosztott puffert. Ha a szükséges adatok megtalálhatók, gyorsan lekérésre kerülnek, és elkerülik az időigényesebb lemezolvasást. A megosztott pufferek közvetítőként szolgálnak az adatbázis-folyamatok és a lemez között, és hatékonyan csökkentik a szükséges I/O-műveletek számát.

Azure-specifikus megjegyzések

A kiszolgálóparaméter alapértelmezett értékét a shared_buffers rugalmas Azure Database for PostgreSQL-kiszolgáló példányának kiépítésekor számítja ki a rendszer a számításhoz kiválasztott terméknév alapján. A rugalmas kiszolgálót támogató számítás termékkijelölésének későbbi változásai nem befolyásolják az adott példány kiszolgálóparaméterének alapértelmezett értékét shared_buffers .

Minden alkalommal, amikor módosítja a példányhoz rendelt terméket, a paraméter értékét shared_buffers is módosítania kell az alábbi képletek értékeinek megfelelően.

Legfeljebb 2 GiB memóriával rendelkező virtuális gépek esetén az érték shared_buffers kiszámításához használt képlet az memoryGib * 16384.

A 2 GiB-nél nagyobb virtuális gépek esetében az érték shared_buffers kiszámításához használt képlet az memoryGib * 32768.

Az előző képlet alapján az alábbi táblázat felsorolja azokat az értékeket, amelyekre a kiszolgálóparaméter a kiosztott memória mennyiségétől függően be van állítva:

Memória mérete shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GiB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GiB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

megosztott_memória_típus

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Kiválasztja a fő megosztott memóriaterülethez használt megosztott memória implementációját.
Adattípus enumerálás
Alapértelmezett érték mmap
Engedélyezett értékek mmap
Paraméter típusa csak olvasható
Documentation megosztott_memória_típus

subtransaction_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az altranszmitálási gyorsítótárhoz használt dedikált pufferkészlet méretét. Adja meg a 0 értéket, ha ezt az értéket a shared_buffers törtrészeként kell meghatározni.
Adattípus egész szám
Alapértelmezett érték 1024
Engedélyezett értékek 0-131072
Paraméter típusa statikus
Documentation subtransaction_buffers

temp_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az egyes munkamenetek által használt ideiglenes pufferek maximális számát.
Adattípus egész szám
Alapértelmezett érték 1024
Engedélyezett értékek 100-1073741823
Paraméter típusa dynamic
Documentation temp_buffers

transaction_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a dedikált pufferkészlet méretét a tranzakciós állapot gyorsítótárhoz. Adja meg a 0 értéket, ha ezt az értéket a shared_buffers törtrészeként kell meghatározni.
Adattípus egész szám
Alapértelmezett érték 1024
Engedélyezett értékek 0-131072
Paraméter típusa statikus
Documentation transaction_buffers

vacuum_buffer_usage_limit

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a pufferkészlet méretét a VACUUM, az ANALYZE és az autovacuum esetében.
Adattípus egész szám
Alapértelmezett érték 2048
Engedélyezett értékek 0-16777216
Paraméter típusa dynamic
Documentation vacuum_buffer_usage_limit

work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a lekérdezési munkaterületekhez használandó memória maximális méretét. Ennyi memóriát használhatnak az egyes belső rendezési műveletek és kivonattáblák, mielőtt ideiglenes lemezfájlokra váltanak.
Adattípus egész szám
Alapértelmezett érték 4096
Engedélyezett értékek 4096-2097151
Paraméter típusa dynamic
Documentation work_mem

Description

A work_mem PostgreSQL paramétere szabályozza az egyes belső műveletekhez lefoglalt memória mennyiségét az egyes adatbázis-munkamenetek magánmemóriája területén. Ilyen műveletek például a rendezés és a kivonatolás.

A megosztott pufferek, amelyek a megosztott memóriaterületen vannak, ellentétben a work_mem egyenkénti munkamenet vagy lekérdezés privát memóriaterében van lefoglalva. A megfelelő work_mem méret beállításával jelentősen javíthatja ezeknek a műveleteknek a hatékonyságát, és csökkentheti az ideiglenes adatok lemezre írásának szükségességét.

Kulcsfontosságú pontok

  • Privát kapcsolati memória: work_mem az egyes adatbázis-munkamenetek által használt magánmemória része. Ez a memória különbözik a használt megosztott memóriaterülettől shared_buffers .
  • Lekérdezésspecifikus használat: Nem minden munkamenetet vagy lekérdezést használ work_mem. Egyszerű lekérdezések, mint például SELECT 1, valószínűleg nem igényelnek work_mem. Az összetett lekérdezések azonban, amelyek olyan műveleteket foglalnak magukban, mint a rendezés vagy a kivonatolás, egy vagy több work_mem adattömböt fogyaszthatnak.
  • Párhuzamos műveletek: Több párhuzamos háttérrendszerre kiterjedő lekérdezések esetén minden háttérrendszer egy vagy több adattömbet work_memhasználhat.

Monitorozás és work_mem módosítása

Elengedhetetlen a rendszer teljesítményének folyamatos monitorozása és szükség szerinti módosítása work_mem , elsősorban akkor, ha a rendezési vagy kivonatolási műveletekhez kapcsolódó lekérdezés-végrehajtási idő lassú. A teljesítmény monitorozásának módjai az Azure Portalon elérhető eszközökkel:

  • Lekérdezési teljesítményelemzés: Az ideiglenes fájlokat létrehozó lekérdezések azonosításához tekintse meg a leggyakoribb lekérdezéseket ideiglenes fájlok lapján. Ez a helyzet arra utal , hogy növelni kell a növekedést work_mem.
  • Hibaelhárítási útmutatók: A hibaelhárítási útmutatók Magas ideiglenes fájlok lapján azonosíthatja a problémás lekérdezéseket.
Granuláris beállítás

A paraméter kezelése work_mem során gyakran hatékonyabb egy részletes beállítási módszer alkalmazása a globális érték beállítása helyett. Ez a megközelítés biztosítja, hogy a memóriát körültekintően a folyamatok és a felhasználók konkrét igényei alapján foglalja le. Emellett minimálisra csökkenti a memóriahiányból adódó problémák kockázatát. Az alábbiak szerint végezheti el a következő lépéseket:

  • Felhasználói szint: Ha egy adott felhasználó elsősorban aggregációs vagy jelentéskészítési feladatokban vesz részt, amelyek memóriaigényesek, fontolja meg az adott felhasználó értékének work_mem testreszabását. ALTER ROLE A parancs használatával javíthatja a felhasználó műveleteinek teljesítményét.

  • Függvény-/eljárásszint: Ha bizonyos függvények vagy eljárások jelentős ideiglenes fájlokat hoznak létre, előnyös lehet az work_mem érték növelése az adott függvény vagy eljárás szintjén. Használja a ALTER FUNCTION vagy ALTER PROCEDURE parancsot, hogy pontosabban lefoglaljon több memóriát ezekhez a műveletekhez.

  • Adatbázisszint: Ha work_mem csak bizonyos adatbázisok hoznak létre nagy mennyiségű ideiglenes fájlt, módosítsa az adatbázis szintjén.

  • Globális szint: Ha a rendszer elemzése azt mutatja, hogy a lekérdezések többsége kis ideiglenes fájlokat hoz létre, míg csak kevesen hoznak létre nagy fájlokat, érdemes lehet globálisan növelni az work_mem értéket. Ez a művelet megkönnyíti a legtöbb lekérdezés feldolgozását a memóriában, így elkerülheti a lemezalapú műveleteket, és javíthatja a hatékonyságot. Azonban mindig legyen óvatos, és figyelje a kiszolgáló memóriakihasználtságát, hogy képes legyen kezelni a megnövekedett work_mem értéket.

A rendezési műveletek minimális work_mem értékének meghatározása

Ha meg szeretné keresni egy adott lekérdezés minimális work_mem értékét, különösen azt, amely ideiglenes lemezfájlokat hoz létre a rendezési folyamat során, először a lekérdezés végrehajtása során létrehozott ideiglenes fájlméretet kell figyelembe vennie. Ha például egy lekérdezés 20 MB-os ideiglenes fájlt hoz létre:

  1. Csatlakozzon az adatbázishoz a psql vagy az előnyben részesített PostgreSQL-ügyfél használatával.
  2. Állítson be egy 20 MB-nál valamivel nagyobb kezdeti work_mem értéket a további fejlécek számba vételéhez a memóriában történő feldolgozáskor. Használjon egy parancsot, például: SET work_mem TO '25MB'.
  3. Futtassa EXPLAIN ANALYZE a problémás lekérdezést ugyanabban a munkamenetben.
  4. Tekintse át a kimenetet "Sort Method: quicksort Memory: xkB". Ha jelzi "external merge Disk: xkB", növelje az work_mem értéket lépésenként, és tesztelje újra, amíg meg nem jelenik "quicksort Memory". A "quicksort Memory" megjelenése jelzi, hogy a lekérdezés most már a memóriában működik.
  5. Miután meghatározta az értéket ezzel a módszerrel, globálisan vagy részletesebb szinteken (a korábban leírtak szerint) alkalmazhatja a működési igényeinek megfelelően.

autovacuum_work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az egyes autovacuum-feldolgozó folyamatok által használandó maximális memóriát.
Adattípus egész szám
Alapértelmezett érték -1
Engedélyezett értékek -1-2097151
Paraméter típusa dynamic
Documentation autovacuum_work_mem

dynamic_megosztott_memória_típus

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Kiválasztja a használt dinamikus megosztott memória implementációját.
Adattípus enumerálás
Alapértelmezett érték posix
Engedélyezett értékek posix
Paraméter típusa csak olvasható
Documentation dinamikus_megosztott_memória_típus

hash_mem_multiplier (hash-memória-szorzó)

Attribute Érték
Kategória Erőforrás-használat / Memória
Description A kivonattáblákhoz használandó work_mem többszöröse.
Adattípus Numerikus
Alapértelmezett érték 2
Engedélyezett értékek 1-1000
Paraméter típusa dynamic
Documentation hash_mem_multiplier

huge_pages

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Engedélyezi/letiltja a hatalmas memórialapok használatát. Ez a beállítás nem alkalmazható a 4 virtuális magnál kevesebb virtuális magot futtató kiszolgálókra.
Adattípus enumerálás
Alapértelmezett érték try
Engedélyezett értékek on,off,try
Paraméter típusa statikus
Documentation nagy_oldalak

Description

A hatalmas lapok olyan funkciók, amelyek lehetővé teszik a memória nagyobb blokkokban való kezelését. A szabványos 4 KB-os oldalak helyett általában legfeljebb 2 MB méretű blokkokat kezelhet.

A hatalmas oldalak használata olyan teljesítménybeli előnyöket kínálhat, amelyek hatékonyan ki tudják kapcsolni a processzort:

  • Csökkentik a memóriakezelési feladatokhoz, például kevesebb fordítási lookaside pufferhez (TLB) kapcsolódó többletterhelést.
  • Lerövidítik a memóriakezeléshez szükséges időt.

A PostgreSQL-ben a hatalmas oldalakat csak a megosztott memóriaterületen használhatja. A megosztott memóriaterület jelentős része megosztott pufferekhez van lefoglalva.

Egy másik előnye, hogy a hatalmas oldalak megakadályozzák a megosztott memóriaterület lemezre való felcserélését, ami tovább stabilizálja a teljesítményt.

Recommendations

  • A jelentős memóriaerőforrásokkal rendelkező kiszolgálók esetében kerülje a hatalmas lapok letiltását. A hatalmas lapok letiltása ronthatja a teljesítményt.
  • Ha egy kisebb kiszolgálóval kezd, amely nem támogatja a hatalmas oldalakat, de várhatóan felskáláz egy olyan kiszolgálóra, amely igen, tartsa a beállítást huge_pages a zökkenőmentes átmenet és az TRY optimális teljesítmény érdekében.

Azure-specifikus megjegyzések

A négy vagy több virtuális processzormaggal rendelkező kiszolgálók esetében a hatalmas lapok automatikusan lefoglalásra kerülnek az alapul szolgáló operációs rendszerből. A szolgáltatás nem érhető el négynél kevesebb virtuális maggal rendelkező kiszolgálók esetében. A hatalmas lapok száma automatikusan módosul, ha a megosztott memória beállításai módosulnak, beleértve a shared_buffersmódosításokat is.

huge_page_size

Attribute Érték
Kategória Erőforrás-használat / Memória
Description A kérendő hatalmas oldal mérete.
Adattípus egész szám
Alapértelmezett érték 0
Engedélyezett értékek 0
Paraméter típusa csak olvasható
Documentation huge_page_size

logical_decoding_work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a logikai dekódoláshoz használandó memória maximális méretét.
Adattípus egész szám
Alapértelmezett érték 65536
Engedélyezett értékek 64-2147483647
Paraméter típusa dynamic
Documentation logical_decoding_work_mem

karbantartási_munka_memória

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az olyan karbantartási műveletekhez használandó maximális memóriát, mint a VACUUM, az Index létrehozása.
Adattípus egész szám
Alapértelmezett érték A kiszolgáló számára lefoglalt erőforrásoktól (virtuális magoktól, RAM-októl vagy lemezterülettől) függ.
Engedélyezett értékek 1024-2097151
Paraméter típusa dynamic
Documentation maintenance_work_mem

Description

maintenance_work_mem egy konfigurációs paraméter a PostgreSQL-ben. Ez szabályozza a karbantartási műveletekhez lefoglalt memória mennyiségét, például VACUUM: , CREATE INDEXés ALTER TABLE. Ellentétben work_mema lekérdezési műveletek memóriafoglalásával, maintenance_work_mem az adatbázis struktúráját karbantartó és optimalizáló feladatokhoz van fenntartva.

! [MEGJEGYZÉS] A túlzottan agresszív értékek beállítása maintenance_work_mem időnként memóriahibahoz vezethet a rendszerben. A paraméter módosítása előtt rendkívül fontos tisztában lenni a kiszolgálón rendelkezésre álló memória mennyiségével és az egyidejű műveletek számával, amelyek memóriát foglalhatnak le a korábban ismertetett feladatokhoz.

Kulcsfontosságú pontok

  • Vákuummemória sapka: Ha növelni szeretné az elhalt tuple-ok eltávolításának sebességét, vegye figyelembe, hogy maintenance_work_mem az elhalt tuple-azonosítók gyűjtésére beépített korlátozás vonatkozik. Ehhez a folyamathoz legfeljebb 1 GB memóriát használhat.
  • A memória elkülönítése az autovacuumhoz: A beállítással autovacuum_work_mem szabályozhatja a memóriát, amelyet az autovacuum-műveletek egymástól függetlenül használnak. Ez a beállítás az maintenance_work_mem egy része. Eldöntheti, hogy az autovacuum mennyi memóriát használ anélkül, hogy befolyásolná az egyéb karbantartási feladatok és adatdefiníciós műveletek memóriafoglalását.

Azure-specifikus megjegyzések

A kiszolgálóparaméter alapértelmezett értékét a maintenance_work_mem rugalmas Azure Database for PostgreSQL-kiszolgáló példányának kiépítésekor számítja ki a rendszer a számításhoz kiválasztott terméknév alapján. A rugalmas kiszolgálót támogató számítás termékkijelölésének későbbi módosítása nem befolyásolja az adott példány kiszolgálóparaméterének alapértelmezett értékét maintenance_work_mem .

Minden alkalommal, amikor módosítja a példányhoz rendelt terméket, a maintenance_work_mem paraméter értékét is az alábbi képlet értékei alapján kell módosítania.

Az érték maintenance_work_mem kiszámításához használt képlet az .(long)(82.5 * ln(memoryGiB) + 40) * 1024

Az előző képlet alapján az alábbi táblázat felsorolja azokat az értékeket, amelyekre a kiszolgálóparaméter a kiosztott memória mennyiségétől függően be van állítva:

Memória mérete karbantartási_munka_memória
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GiB 332 800 KiB
48 GiB 367 616 KiB
64 GiB 392,192 KiB
80 GiB 410 624 KiB
128 GiB 450 560 KiB
160 GiB 468 992 KiB
192 GiB 484 352 KiB
256 GiB 508,928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_előkészített_tranzakciók

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az egyidejűleg előkészített tranzakciók maximális számát. Replikakiszolgáló futtatásakor ezt a paramétert ugyanarra vagy magasabbra kell állítania, mint az elsődleges kiszolgálón.
Adattípus egész szám
Alapértelmezett érték 0
Engedélyezett értékek 0-262143
Paraméter típusa statikus
Documentation max_prepared_transactions

max_stack_depth

Attribute Érték
Kategória Erőforrás-használat / Memória
Description A maximális veremmélység beállítása kilobájtban.
Adattípus egész szám
Alapértelmezett érték 2048
Engedélyezett értékek 2048
Paraméter típusa csak olvasható
Documentation max_stack_depth

min_dynamic_shared_memory

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Az indításkor fenntartott dinamikus megosztott memória mennyisége.
Adattípus egész szám
Alapértelmezett érték 0
Engedélyezett értékek 0
Paraméter típusa csak olvasható
Documentation min_dynamic_shared_memory

shared_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a kiszolgáló által használt megosztott memóriapufferek számát. Az egység 8kb. Az engedélyezett értékek a rendelkezésre álló memória 10%- 75%-ának tartományán belül vannak.
Adattípus egész szám
Alapértelmezett érték A kiszolgáló számára lefoglalt erőforrásoktól (virtuális magoktól, RAM-októl vagy lemezterülettől) függ.
Engedélyezett értékek 16-1073741823
Paraméter típusa statikus
Documentation shared_buffers

Description

A shared_buffers konfigurációs paraméter határozza meg a PostgreSQL-adatbázis számára az adatok puffereléséhez lefoglalt rendszermemória mennyiségét. Központi memóriakészletként szolgál, amely minden adatbázis-folyamat számára elérhető.

Amikor adatokra van szükség, az adatbázis-folyamat először ellenőrzi a megosztott puffert. Ha a szükséges adatok megtalálhatók, gyorsan lekérésre kerülnek, és elkerülik az időigényesebb lemezolvasást. A megosztott pufferek közvetítőként szolgálnak az adatbázis-folyamatok és a lemez között, és hatékonyan csökkentik a szükséges I/O-műveletek számát.

Azure-specifikus megjegyzések

A kiszolgálóparaméter alapértelmezett értékét a shared_buffers rugalmas Azure Database for PostgreSQL-kiszolgáló példányának kiépítésekor számítja ki a rendszer a számításhoz kiválasztott terméknév alapján. A rugalmas kiszolgálót támogató számítás termékkijelölésének későbbi változásai nem befolyásolják az adott példány kiszolgálóparaméterének alapértelmezett értékét shared_buffers .

Minden alkalommal, amikor módosítja a példányhoz rendelt terméket, a paraméter értékét shared_buffers is módosítania kell az alábbi képletek értékeinek megfelelően.

Legfeljebb 2 GiB memóriával rendelkező virtuális gépek esetén az érték shared_buffers kiszámításához használt képlet az memoryGib * 16384.

A 2 GiB-nél nagyobb virtuális gépek esetében az érték shared_buffers kiszámításához használt képlet az memoryGib * 32768.

Az előző képlet alapján az alábbi táblázat felsorolja azokat az értékeket, amelyekre a kiszolgálóparaméter a kiosztott memória mennyiségétől függően be van állítva:

Memória mérete shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GiB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GiB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

megosztott_memória_típus

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Kiválasztja a fő megosztott memóriaterülethez használt megosztott memória implementációját.
Adattípus enumerálás
Alapértelmezett érték mmap
Engedélyezett értékek mmap
Paraméter típusa csak olvasható
Documentation megosztott_memória_típus

temp_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Az egyes adatbázis-munkamenetek által használt ideiglenes pufferek maximális számát adja meg.
Adattípus egész szám
Alapértelmezett érték 1024
Engedélyezett értékek 100-1073741823
Paraméter típusa dynamic
Documentation temp_buffers

vacuum_buffer_usage_limit

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a pufferkészlet méretét a VACUUM, az ANALYZE és az autovacuum esetében.
Adattípus egész szám
Alapértelmezett érték 256
Engedélyezett értékek 0-16777216
Paraméter típusa dynamic
Documentation vacuum_buffer_usage_limit

work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a belső rendezési műveletek és kivonattáblák által használandó memória mennyiségét, mielőtt ideiglenes lemezfájlokba ír.
Adattípus egész szám
Alapértelmezett érték 4096
Engedélyezett értékek 4096-2097151
Paraméter típusa dynamic
Documentation work_mem

Description

A work_mem PostgreSQL paramétere szabályozza az egyes belső műveletekhez lefoglalt memória mennyiségét az egyes adatbázis-munkamenetek magánmemóriája területén. Ilyen műveletek például a rendezés és a kivonatolás.

A megosztott pufferek, amelyek a megosztott memóriaterületen vannak, ellentétben a work_mem egyenkénti munkamenet vagy lekérdezés privát memóriaterében van lefoglalva. A megfelelő work_mem méret beállításával jelentősen javíthatja ezeknek a műveleteknek a hatékonyságát, és csökkentheti az ideiglenes adatok lemezre írásának szükségességét.

Kulcsfontosságú pontok

  • Privát kapcsolati memória: work_mem az egyes adatbázis-munkamenetek által használt magánmemória része. Ez a memória különbözik a használt megosztott memóriaterülettől shared_buffers .
  • Lekérdezésspecifikus használat: Nem minden munkamenetet vagy lekérdezést használ work_mem. Egyszerű lekérdezések, mint például SELECT 1, valószínűleg nem igényelnek work_mem. Az összetett lekérdezések azonban, amelyek olyan műveleteket foglalnak magukban, mint a rendezés vagy a kivonatolás, egy vagy több work_mem adattömböt fogyaszthatnak.
  • Párhuzamos műveletek: Több párhuzamos háttérrendszerre kiterjedő lekérdezések esetén minden háttérrendszer egy vagy több adattömbet work_memhasználhat.

Monitorozás és work_mem módosítása

Elengedhetetlen a rendszer teljesítményének folyamatos monitorozása és szükség szerinti módosítása work_mem , elsősorban akkor, ha a rendezési vagy kivonatolási műveletekhez kapcsolódó lekérdezés-végrehajtási idő lassú. A teljesítmény monitorozásának módjai az Azure Portalon elérhető eszközökkel:

  • Lekérdezési teljesítményelemzés: Az ideiglenes fájlokat létrehozó lekérdezések azonosításához tekintse meg a leggyakoribb lekérdezéseket ideiglenes fájlok lapján. Ez a helyzet arra utal , hogy növelni kell a növekedést work_mem.
  • Hibaelhárítási útmutatók: A hibaelhárítási útmutatók Magas ideiglenes fájlok lapján azonosíthatja a problémás lekérdezéseket.
Granuláris beállítás

A paraméter kezelése work_mem során gyakran hatékonyabb egy részletes beállítási módszer alkalmazása a globális érték beállítása helyett. Ez a megközelítés biztosítja, hogy a memóriát körültekintően a folyamatok és a felhasználók konkrét igényei alapján foglalja le. Emellett minimálisra csökkenti a memóriahiányból adódó problémák kockázatát. Az alábbiak szerint végezheti el a következő lépéseket:

  • Felhasználói szint: Ha egy adott felhasználó elsősorban aggregációs vagy jelentéskészítési feladatokban vesz részt, amelyek memóriaigényesek, fontolja meg az adott felhasználó értékének work_mem testreszabását. ALTER ROLE A parancs használatával javíthatja a felhasználó műveleteinek teljesítményét.

  • Függvény-/eljárásszint: Ha bizonyos függvények vagy eljárások jelentős ideiglenes fájlokat hoznak létre, előnyös lehet az work_mem érték növelése az adott függvény vagy eljárás szintjén. Használja a ALTER FUNCTION vagy ALTER PROCEDURE parancsot, hogy pontosabban lefoglaljon több memóriát ezekhez a műveletekhez.

  • Adatbázisszint: Ha work_mem csak bizonyos adatbázisok hoznak létre nagy mennyiségű ideiglenes fájlt, módosítsa az adatbázis szintjén.

  • Globális szint: Ha a rendszer elemzése azt mutatja, hogy a lekérdezések többsége kis ideiglenes fájlokat hoz létre, míg csak kevesen hoznak létre nagy fájlokat, érdemes lehet globálisan növelni az work_mem értéket. Ez a művelet megkönnyíti a legtöbb lekérdezés feldolgozását a memóriában, így elkerülheti a lemezalapú műveleteket, és javíthatja a hatékonyságot. Azonban mindig legyen óvatos, és figyelje a kiszolgáló memóriakihasználtságát, hogy képes legyen kezelni a megnövekedett work_mem értéket.

A rendezési műveletek minimális work_mem értékének meghatározása

Ha meg szeretné keresni egy adott lekérdezés minimális work_mem értékét, különösen azt, amely ideiglenes lemezfájlokat hoz létre a rendezési folyamat során, először a lekérdezés végrehajtása során létrehozott ideiglenes fájlméretet kell figyelembe vennie. Ha például egy lekérdezés 20 MB-os ideiglenes fájlt hoz létre:

  1. Csatlakozzon az adatbázishoz a psql vagy az előnyben részesített PostgreSQL-ügyfél használatával.
  2. Állítson be egy 20 MB-nál valamivel nagyobb kezdeti work_mem értéket a további fejlécek számba vételéhez a memóriában történő feldolgozáskor. Használjon egy parancsot, például: SET work_mem TO '25MB'.
  3. Futtassa EXPLAIN ANALYZE a problémás lekérdezést ugyanabban a munkamenetben.
  4. Tekintse át a kimenetet "Sort Method: quicksort Memory: xkB". Ha jelzi "external merge Disk: xkB", növelje az work_mem értéket lépésenként, és tesztelje újra, amíg meg nem jelenik "quicksort Memory". A "quicksort Memory" megjelenése jelzi, hogy a lekérdezés most már a memóriában működik.
  5. Miután meghatározta az értéket ezzel a módszerrel, globálisan vagy részletesebb szinteken (a korábban leírtak szerint) alkalmazhatja a működési igényeinek megfelelően.

autovacuum_work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az egyes autovacuum-feldolgozó folyamatok által használandó maximális memóriát.
Adattípus egész szám
Alapértelmezett érték -1
Engedélyezett értékek -1-2097151
Paraméter típusa dynamic
Documentation autovacuum_work_mem

dynamic_megosztott_memória_típus

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Kiválasztja a használt dinamikus megosztott memória implementációját.
Adattípus enumerálás
Alapértelmezett érték posix
Engedélyezett értékek posix
Paraméter típusa csak olvasható
Documentation dinamikus_megosztott_memória_típus

hash_mem_multiplier (hash-memória-szorzó)

Attribute Érték
Kategória Erőforrás-használat / Memória
Description A kivonattáblákhoz használandó work_mem többszöröse.
Adattípus Numerikus
Alapértelmezett érték 2
Engedélyezett értékek 1-1000
Paraméter típusa dynamic
Documentation hash_mem_multiplier

huge_pages

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Engedélyezi/letiltja a hatalmas memórialapok használatát. Ez a beállítás nem alkalmazható a 4 virtuális magnál kevesebb virtuális magot futtató kiszolgálókra.
Adattípus enumerálás
Alapértelmezett érték try
Engedélyezett értékek on,off,try
Paraméter típusa statikus
Documentation nagy_oldalak

Description

A hatalmas lapok olyan funkciók, amelyek lehetővé teszik a memória nagyobb blokkokban való kezelését. A szabványos 4 KB-os oldalak helyett általában legfeljebb 2 MB méretű blokkokat kezelhet.

A hatalmas oldalak használata olyan teljesítménybeli előnyöket kínálhat, amelyek hatékonyan ki tudják kapcsolni a processzort:

  • Csökkentik a memóriakezelési feladatokhoz, például kevesebb fordítási lookaside pufferhez (TLB) kapcsolódó többletterhelést.
  • Lerövidítik a memóriakezeléshez szükséges időt.

A PostgreSQL-ben a hatalmas oldalakat csak a megosztott memóriaterületen használhatja. A megosztott memóriaterület jelentős része megosztott pufferekhez van lefoglalva.

Egy másik előnye, hogy a hatalmas oldalak megakadályozzák a megosztott memóriaterület lemezre való felcserélését, ami tovább stabilizálja a teljesítményt.

Recommendations

  • A jelentős memóriaerőforrásokkal rendelkező kiszolgálók esetében kerülje a hatalmas lapok letiltását. A hatalmas lapok letiltása ronthatja a teljesítményt.
  • Ha egy kisebb kiszolgálóval kezd, amely nem támogatja a hatalmas oldalakat, de várhatóan felskáláz egy olyan kiszolgálóra, amely igen, tartsa a beállítást huge_pages a zökkenőmentes átmenet és az TRY optimális teljesítmény érdekében.

Azure-specifikus megjegyzések

A négy vagy több virtuális processzormaggal rendelkező kiszolgálók esetében a hatalmas lapok automatikusan lefoglalásra kerülnek az alapul szolgáló operációs rendszerből. A szolgáltatás nem érhető el négynél kevesebb virtuális maggal rendelkező kiszolgálók esetében. A hatalmas lapok száma automatikusan módosul, ha a megosztott memória beállításai módosulnak, beleértve a shared_buffersmódosításokat is.

huge_page_size

Attribute Érték
Kategória Erőforrás-használat / Memória
Description A kérendő hatalmas oldal mérete.
Adattípus egész szám
Alapértelmezett érték 0
Engedélyezett értékek 0
Paraméter típusa csak olvasható
Documentation huge_page_size

logical_decoding_work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a logikai dekódoláshoz használandó memória maximális méretét.
Adattípus egész szám
Alapértelmezett érték 65536
Engedélyezett értékek 64-2147483647
Paraméter típusa dynamic
Documentation logical_decoding_work_mem

karbantartási_munka_memória

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az olyan karbantartási műveletekhez használandó maximális memóriát, mint a VACUUM, az Index létrehozása.
Adattípus egész szám
Alapértelmezett érték A kiszolgáló számára lefoglalt erőforrásoktól (virtuális magoktól, RAM-októl vagy lemezterülettől) függ.
Engedélyezett értékek 1024-2097151
Paraméter típusa dynamic
Documentation maintenance_work_mem

Description

maintenance_work_mem egy konfigurációs paraméter a PostgreSQL-ben. Ez szabályozza a karbantartási műveletekhez lefoglalt memória mennyiségét, például VACUUM: , CREATE INDEXés ALTER TABLE. Ellentétben work_mema lekérdezési műveletek memóriafoglalásával, maintenance_work_mem az adatbázis struktúráját karbantartó és optimalizáló feladatokhoz van fenntartva.

! [MEGJEGYZÉS] A túlzottan agresszív értékek beállítása maintenance_work_mem időnként memóriahibahoz vezethet a rendszerben. A paraméter módosítása előtt rendkívül fontos tisztában lenni a kiszolgálón rendelkezésre álló memória mennyiségével és az egyidejű műveletek számával, amelyek memóriát foglalhatnak le a korábban ismertetett feladatokhoz.

Kulcsfontosságú pontok

  • Vákuummemória sapka: Ha növelni szeretné az elhalt tuple-ok eltávolításának sebességét, vegye figyelembe, hogy maintenance_work_mem az elhalt tuple-azonosítók gyűjtésére beépített korlátozás vonatkozik. Ehhez a folyamathoz legfeljebb 1 GB memóriát használhat.
  • A memória elkülönítése az autovacuumhoz: A beállítással autovacuum_work_mem szabályozhatja a memóriát, amelyet az autovacuum-műveletek egymástól függetlenül használnak. Ez a beállítás az maintenance_work_mem egy része. Eldöntheti, hogy az autovacuum mennyi memóriát használ anélkül, hogy befolyásolná az egyéb karbantartási feladatok és adatdefiníciós műveletek memóriafoglalását.

Azure-specifikus megjegyzések

A kiszolgálóparaméter alapértelmezett értékét a maintenance_work_mem rugalmas Azure Database for PostgreSQL-kiszolgáló példányának kiépítésekor számítja ki a rendszer a számításhoz kiválasztott terméknév alapján. A rugalmas kiszolgálót támogató számítás termékkijelölésének későbbi módosítása nem befolyásolja az adott példány kiszolgálóparaméterének alapértelmezett értékét maintenance_work_mem .

Minden alkalommal, amikor módosítja a példányhoz rendelt terméket, a maintenance_work_mem paraméter értékét is az alábbi képlet értékei alapján kell módosítania.

Az érték maintenance_work_mem kiszámításához használt képlet az .(long)(82.5 * ln(memoryGiB) + 40) * 1024

Az előző képlet alapján az alábbi táblázat felsorolja azokat az értékeket, amelyekre a kiszolgálóparaméter a kiosztott memória mennyiségétől függően be van állítva:

Memória mérete karbantartási_munka_memória
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GiB 332 800 KiB
48 GiB 367 616 KiB
64 GiB 392,192 KiB
80 GiB 410 624 KiB
128 GiB 450 560 KiB
160 GiB 468 992 KiB
192 GiB 484 352 KiB
256 GiB 508,928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_előkészített_tranzakciók

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az egyidejűleg előkészített tranzakciók maximális számát. Replikakiszolgáló futtatásakor ezt a paramétert ugyanarra vagy magasabbra kell állítania, mint az elsődleges kiszolgálón.
Adattípus egész szám
Alapértelmezett érték 0
Engedélyezett értékek 0-262143
Paraméter típusa statikus
Documentation max_prepared_transactions

max_stack_depth

Attribute Érték
Kategória Erőforrás-használat / Memória
Description A maximális veremmélység beállítása kilobájtban.
Adattípus egész szám
Alapértelmezett érték 2048
Engedélyezett értékek 2048
Paraméter típusa csak olvasható
Documentation max_stack_depth

min_dynamic_shared_memory

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Az indításkor fenntartott dinamikus megosztott memória mennyisége.
Adattípus egész szám
Alapértelmezett érték 0
Engedélyezett értékek 0
Paraméter típusa csak olvasható
Documentation min_dynamic_shared_memory

shared_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a kiszolgáló által használt megosztott memóriapufferek számát. Az egység 8kb. Az engedélyezett értékek a rendelkezésre álló memória 10%- 75%-ának tartományán belül vannak.
Adattípus egész szám
Alapértelmezett érték A kiszolgáló számára lefoglalt erőforrásoktól (virtuális magoktól, RAM-októl vagy lemezterülettől) függ.
Engedélyezett értékek 16-1073741823
Paraméter típusa statikus
Documentation shared_buffers

Description

A shared_buffers konfigurációs paraméter határozza meg a PostgreSQL-adatbázis számára az adatok puffereléséhez lefoglalt rendszermemória mennyiségét. Központi memóriakészletként szolgál, amely minden adatbázis-folyamat számára elérhető.

Amikor adatokra van szükség, az adatbázis-folyamat először ellenőrzi a megosztott puffert. Ha a szükséges adatok megtalálhatók, gyorsan lekérésre kerülnek, és elkerülik az időigényesebb lemezolvasást. A megosztott pufferek közvetítőként szolgálnak az adatbázis-folyamatok és a lemez között, és hatékonyan csökkentik a szükséges I/O-műveletek számát.

Azure-specifikus megjegyzések

A kiszolgálóparaméter alapértelmezett értékét a shared_buffers rugalmas Azure Database for PostgreSQL-kiszolgáló példányának kiépítésekor számítja ki a rendszer a számításhoz kiválasztott terméknév alapján. A rugalmas kiszolgálót támogató számítás termékkijelölésének későbbi változásai nem befolyásolják az adott példány kiszolgálóparaméterének alapértelmezett értékét shared_buffers .

Minden alkalommal, amikor módosítja a példányhoz rendelt terméket, a paraméter értékét shared_buffers is módosítania kell az alábbi képletek értékeinek megfelelően.

Legfeljebb 2 GiB memóriával rendelkező virtuális gépek esetén az érték shared_buffers kiszámításához használt képlet az memoryGib * 16384.

A 2 GiB-nél nagyobb virtuális gépek esetében az érték shared_buffers kiszámításához használt képlet az memoryGib * 32768.

Az előző képlet alapján az alábbi táblázat felsorolja azokat az értékeket, amelyekre a kiszolgálóparaméter a kiosztott memória mennyiségétől függően be van állítva:

Memória mérete shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GiB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GiB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

megosztott_memória_típus

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Kiválasztja a fő megosztott memóriaterülethez használt megosztott memória implementációját.
Adattípus enumerálás
Alapértelmezett érték mmap
Engedélyezett értékek mmap
Paraméter típusa csak olvasható
Documentation megosztott_memória_típus

temp_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Az egyes adatbázis-munkamenetek által használt ideiglenes pufferek maximális számát adja meg.
Adattípus egész szám
Alapértelmezett érték 1024
Engedélyezett értékek 100-1073741823
Paraméter típusa dynamic
Documentation temp_buffers

work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a belső rendezési műveletek és kivonattáblák által használandó memória mennyiségét, mielőtt ideiglenes lemezfájlokba ír.
Adattípus egész szám
Alapértelmezett érték 4096
Engedélyezett értékek 4096-2097151
Paraméter típusa dynamic
Documentation work_mem

Description

A work_mem PostgreSQL paramétere szabályozza az egyes belső műveletekhez lefoglalt memória mennyiségét az egyes adatbázis-munkamenetek magánmemóriája területén. Ilyen műveletek például a rendezés és a kivonatolás.

A megosztott pufferek, amelyek a megosztott memóriaterületen vannak, ellentétben a work_mem egyenkénti munkamenet vagy lekérdezés privát memóriaterében van lefoglalva. A megfelelő work_mem méret beállításával jelentősen javíthatja ezeknek a műveleteknek a hatékonyságát, és csökkentheti az ideiglenes adatok lemezre írásának szükségességét.

Kulcsfontosságú pontok

  • Privát kapcsolati memória: work_mem az egyes adatbázis-munkamenetek által használt magánmemória része. Ez a memória különbözik a használt megosztott memóriaterülettől shared_buffers .
  • Lekérdezésspecifikus használat: Nem minden munkamenetet vagy lekérdezést használ work_mem. Egyszerű lekérdezések, mint például SELECT 1, valószínűleg nem igényelnek work_mem. Az összetett lekérdezések azonban, amelyek olyan műveleteket foglalnak magukban, mint a rendezés vagy a kivonatolás, egy vagy több work_mem adattömböt fogyaszthatnak.
  • Párhuzamos műveletek: Több párhuzamos háttérrendszerre kiterjedő lekérdezések esetén minden háttérrendszer egy vagy több adattömbet work_memhasználhat.

Monitorozás és work_mem módosítása

Elengedhetetlen a rendszer teljesítményének folyamatos monitorozása és szükség szerinti módosítása work_mem , elsősorban akkor, ha a rendezési vagy kivonatolási műveletekhez kapcsolódó lekérdezés-végrehajtási idő lassú. A teljesítmény monitorozásának módjai az Azure Portalon elérhető eszközökkel:

  • Lekérdezési teljesítményelemzés: Az ideiglenes fájlokat létrehozó lekérdezések azonosításához tekintse meg a leggyakoribb lekérdezéseket ideiglenes fájlok lapján. Ez a helyzet arra utal , hogy növelni kell a növekedést work_mem.
  • Hibaelhárítási útmutatók: A hibaelhárítási útmutatók Magas ideiglenes fájlok lapján azonosíthatja a problémás lekérdezéseket.
Granuláris beállítás

A paraméter kezelése work_mem során gyakran hatékonyabb egy részletes beállítási módszer alkalmazása a globális érték beállítása helyett. Ez a megközelítés biztosítja, hogy a memóriát körültekintően a folyamatok és a felhasználók konkrét igényei alapján foglalja le. Emellett minimálisra csökkenti a memóriahiányból adódó problémák kockázatát. Az alábbiak szerint végezheti el a következő lépéseket:

  • Felhasználói szint: Ha egy adott felhasználó elsősorban aggregációs vagy jelentéskészítési feladatokban vesz részt, amelyek memóriaigényesek, fontolja meg az adott felhasználó értékének work_mem testreszabását. ALTER ROLE A parancs használatával javíthatja a felhasználó műveleteinek teljesítményét.

  • Függvény-/eljárásszint: Ha bizonyos függvények vagy eljárások jelentős ideiglenes fájlokat hoznak létre, előnyös lehet az work_mem érték növelése az adott függvény vagy eljárás szintjén. Használja a ALTER FUNCTION vagy ALTER PROCEDURE parancsot, hogy pontosabban lefoglaljon több memóriát ezekhez a műveletekhez.

  • Adatbázisszint: Ha work_mem csak bizonyos adatbázisok hoznak létre nagy mennyiségű ideiglenes fájlt, módosítsa az adatbázis szintjén.

  • Globális szint: Ha a rendszer elemzése azt mutatja, hogy a lekérdezések többsége kis ideiglenes fájlokat hoz létre, míg csak kevesen hoznak létre nagy fájlokat, érdemes lehet globálisan növelni az work_mem értéket. Ez a művelet megkönnyíti a legtöbb lekérdezés feldolgozását a memóriában, így elkerülheti a lemezalapú műveleteket, és javíthatja a hatékonyságot. Azonban mindig legyen óvatos, és figyelje a kiszolgáló memóriakihasználtságát, hogy képes legyen kezelni a megnövekedett work_mem értéket.

A rendezési műveletek minimális work_mem értékének meghatározása

Ha meg szeretné keresni egy adott lekérdezés minimális work_mem értékét, különösen azt, amely ideiglenes lemezfájlokat hoz létre a rendezési folyamat során, először a lekérdezés végrehajtása során létrehozott ideiglenes fájlméretet kell figyelembe vennie. Ha például egy lekérdezés 20 MB-os ideiglenes fájlt hoz létre:

  1. Csatlakozzon az adatbázishoz a psql vagy az előnyben részesített PostgreSQL-ügyfél használatával.
  2. Állítson be egy 20 MB-nál valamivel nagyobb kezdeti work_mem értéket a további fejlécek számba vételéhez a memóriában történő feldolgozáskor. Használjon egy parancsot, például: SET work_mem TO '25MB'.
  3. Futtassa EXPLAIN ANALYZE a problémás lekérdezést ugyanabban a munkamenetben.
  4. Tekintse át a kimenetet "Sort Method: quicksort Memory: xkB". Ha jelzi "external merge Disk: xkB", növelje az work_mem értéket lépésenként, és tesztelje újra, amíg meg nem jelenik "quicksort Memory". A "quicksort Memory" megjelenése jelzi, hogy a lekérdezés most már a memóriában működik.
  5. Miután meghatározta az értéket ezzel a módszerrel, globálisan vagy részletesebb szinteken (a korábban leírtak szerint) alkalmazhatja a működési igényeinek megfelelően.

autovacuum_work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az egyes autovacuum-feldolgozó folyamatok által használandó maximális memóriát.
Adattípus egész szám
Alapértelmezett érték -1
Engedélyezett értékek -1-2097151
Paraméter típusa dynamic
Documentation autovacuum_work_mem

dynamic_megosztott_memória_típus

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Kiválasztja a használt dinamikus megosztott memória implementációját.
Adattípus enumerálás
Alapértelmezett érték posix
Engedélyezett értékek posix
Paraméter típusa csak olvasható
Documentation dinamikus_megosztott_memória_típus

hash_mem_multiplier (hash-memória-szorzó)

Attribute Érték
Kategória Erőforrás-használat / Memória
Description A kivonattáblákhoz használandó work_mem többszöröse.
Adattípus Numerikus
Alapértelmezett érték 1
Engedélyezett értékek 1-1000
Paraméter típusa dynamic
Documentation hash_mem_multiplier

huge_pages

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Engedélyezi/letiltja a hatalmas memórialapok használatát. Ez a beállítás nem alkalmazható a 4 virtuális magnál kevesebb virtuális magot futtató kiszolgálókra.
Adattípus enumerálás
Alapértelmezett érték try
Engedélyezett értékek on,off,try
Paraméter típusa statikus
Documentation nagy_oldalak

Description

A hatalmas lapok olyan funkciók, amelyek lehetővé teszik a memória nagyobb blokkokban való kezelését. A szabványos 4 KB-os oldalak helyett általában legfeljebb 2 MB méretű blokkokat kezelhet.

A hatalmas oldalak használata olyan teljesítménybeli előnyöket kínálhat, amelyek hatékonyan ki tudják kapcsolni a processzort:

  • Csökkentik a memóriakezelési feladatokhoz, például kevesebb fordítási lookaside pufferhez (TLB) kapcsolódó többletterhelést.
  • Lerövidítik a memóriakezeléshez szükséges időt.

A PostgreSQL-ben a hatalmas oldalakat csak a megosztott memóriaterületen használhatja. A megosztott memóriaterület jelentős része megosztott pufferekhez van lefoglalva.

Egy másik előnye, hogy a hatalmas oldalak megakadályozzák a megosztott memóriaterület lemezre való felcserélését, ami tovább stabilizálja a teljesítményt.

Recommendations

  • A jelentős memóriaerőforrásokkal rendelkező kiszolgálók esetében kerülje a hatalmas lapok letiltását. A hatalmas lapok letiltása ronthatja a teljesítményt.
  • Ha egy kisebb kiszolgálóval kezd, amely nem támogatja a hatalmas oldalakat, de várhatóan felskáláz egy olyan kiszolgálóra, amely igen, tartsa a beállítást huge_pages a zökkenőmentes átmenet és az TRY optimális teljesítmény érdekében.

Azure-specifikus megjegyzések

A négy vagy több virtuális processzormaggal rendelkező kiszolgálók esetében a hatalmas lapok automatikusan lefoglalásra kerülnek az alapul szolgáló operációs rendszerből. A szolgáltatás nem érhető el négynél kevesebb virtuális maggal rendelkező kiszolgálók esetében. A hatalmas lapok száma automatikusan módosul, ha a megosztott memória beállításai módosulnak, beleértve a shared_buffersmódosításokat is.

huge_page_size

Attribute Érték
Kategória Erőforrás-használat / Memória
Description A kérendő hatalmas oldal mérete.
Adattípus egész szám
Alapértelmezett érték 0
Engedélyezett értékek 0
Paraméter típusa csak olvasható
Documentation huge_page_size

logical_decoding_work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a logikai dekódoláshoz használandó memória maximális méretét.
Adattípus egész szám
Alapértelmezett érték 65536
Engedélyezett értékek 64-2147483647
Paraméter típusa dynamic
Documentation logical_decoding_work_mem

karbantartási_munka_memória

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az olyan karbantartási műveletekhez használandó maximális memóriát, mint a VACUUM, az Index létrehozása.
Adattípus egész szám
Alapértelmezett érték A kiszolgáló számára lefoglalt erőforrásoktól (virtuális magoktól, RAM-októl vagy lemezterülettől) függ.
Engedélyezett értékek 1024-2097151
Paraméter típusa dynamic
Documentation maintenance_work_mem

Description

maintenance_work_mem egy konfigurációs paraméter a PostgreSQL-ben. Ez szabályozza a karbantartási műveletekhez lefoglalt memória mennyiségét, például VACUUM: , CREATE INDEXés ALTER TABLE. Ellentétben work_mema lekérdezési műveletek memóriafoglalásával, maintenance_work_mem az adatbázis struktúráját karbantartó és optimalizáló feladatokhoz van fenntartva.

! [MEGJEGYZÉS] A túlzottan agresszív értékek beállítása maintenance_work_mem időnként memóriahibahoz vezethet a rendszerben. A paraméter módosítása előtt rendkívül fontos tisztában lenni a kiszolgálón rendelkezésre álló memória mennyiségével és az egyidejű műveletek számával, amelyek memóriát foglalhatnak le a korábban ismertetett feladatokhoz.

Kulcsfontosságú pontok

  • Vákuummemória sapka: Ha növelni szeretné az elhalt tuple-ok eltávolításának sebességét, vegye figyelembe, hogy maintenance_work_mem az elhalt tuple-azonosítók gyűjtésére beépített korlátozás vonatkozik. Ehhez a folyamathoz legfeljebb 1 GB memóriát használhat.
  • A memória elkülönítése az autovacuumhoz: A beállítással autovacuum_work_mem szabályozhatja a memóriát, amelyet az autovacuum-műveletek egymástól függetlenül használnak. Ez a beállítás az maintenance_work_mem egy része. Eldöntheti, hogy az autovacuum mennyi memóriát használ anélkül, hogy befolyásolná az egyéb karbantartási feladatok és adatdefiníciós műveletek memóriafoglalását.

Azure-specifikus megjegyzések

A kiszolgálóparaméter alapértelmezett értékét a maintenance_work_mem rugalmas Azure Database for PostgreSQL-kiszolgáló példányának kiépítésekor számítja ki a rendszer a számításhoz kiválasztott terméknév alapján. A rugalmas kiszolgálót támogató számítás termékkijelölésének későbbi módosítása nem befolyásolja az adott példány kiszolgálóparaméterének alapértelmezett értékét maintenance_work_mem .

Minden alkalommal, amikor módosítja a példányhoz rendelt terméket, a maintenance_work_mem paraméter értékét is az alábbi képlet értékei alapján kell módosítania.

Az érték maintenance_work_mem kiszámításához használt képlet az .(long)(82.5 * ln(memoryGiB) + 40) * 1024

Az előző képlet alapján az alábbi táblázat felsorolja azokat az értékeket, amelyekre a kiszolgálóparaméter a kiosztott memória mennyiségétől függően be van állítva:

Memória mérete karbantartási_munka_memória
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GiB 332 800 KiB
48 GiB 367 616 KiB
64 GiB 392,192 KiB
80 GiB 410 624 KiB
128 GiB 450 560 KiB
160 GiB 468 992 KiB
192 GiB 484 352 KiB
256 GiB 508,928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_előkészített_tranzakciók

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az egyidejűleg előkészített tranzakciók maximális számát. Replikakiszolgáló futtatásakor ezt a paramétert ugyanarra vagy magasabbra kell állítania, mint az elsődleges kiszolgálón.
Adattípus egész szám
Alapértelmezett érték 0
Engedélyezett értékek 0-262143
Paraméter típusa statikus
Documentation max_prepared_transactions

max_stack_depth

Attribute Érték
Kategória Erőforrás-használat / Memória
Description A maximális veremmélység beállítása kilobájtban.
Adattípus egész szám
Alapértelmezett érték 2048
Engedélyezett értékek 2048
Paraméter típusa csak olvasható
Documentation max_stack_depth

min_dynamic_shared_memory

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Az indításkor fenntartott dinamikus megosztott memória mennyisége.
Adattípus egész szám
Alapértelmezett érték 0
Engedélyezett értékek 0
Paraméter típusa csak olvasható
Documentation min_dynamic_shared_memory

shared_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a kiszolgáló által használt megosztott memóriapufferek számát. Az egység 8kb. Az engedélyezett értékek a rendelkezésre álló memória 10%- 75%-ának tartományán belül vannak.
Adattípus egész szám
Alapértelmezett érték A kiszolgáló számára lefoglalt erőforrásoktól (virtuális magoktól, RAM-októl vagy lemezterülettől) függ.
Engedélyezett értékek 16-1073741823
Paraméter típusa statikus
Documentation shared_buffers

Description

A shared_buffers konfigurációs paraméter határozza meg a PostgreSQL-adatbázis számára az adatok puffereléséhez lefoglalt rendszermemória mennyiségét. Központi memóriakészletként szolgál, amely minden adatbázis-folyamat számára elérhető.

Amikor adatokra van szükség, az adatbázis-folyamat először ellenőrzi a megosztott puffert. Ha a szükséges adatok megtalálhatók, gyorsan lekérésre kerülnek, és elkerülik az időigényesebb lemezolvasást. A megosztott pufferek közvetítőként szolgálnak az adatbázis-folyamatok és a lemez között, és hatékonyan csökkentik a szükséges I/O-műveletek számát.

Azure-specifikus megjegyzések

A kiszolgálóparaméter alapértelmezett értékét a shared_buffers rugalmas Azure Database for PostgreSQL-kiszolgáló példányának kiépítésekor számítja ki a rendszer a számításhoz kiválasztott terméknév alapján. A rugalmas kiszolgálót támogató számítás termékkijelölésének későbbi változásai nem befolyásolják az adott példány kiszolgálóparaméterének alapértelmezett értékét shared_buffers .

Minden alkalommal, amikor módosítja a példányhoz rendelt terméket, a paraméter értékét shared_buffers is módosítania kell az alábbi képletek értékeinek megfelelően.

Legfeljebb 2 GiB memóriával rendelkező virtuális gépek esetén az érték shared_buffers kiszámításához használt képlet az memoryGib * 16384.

A 2 GiB-nél nagyobb virtuális gépek esetében az érték shared_buffers kiszámításához használt képlet az memoryGib * 32768.

Az előző képlet alapján az alábbi táblázat felsorolja azokat az értékeket, amelyekre a kiszolgálóparaméter a kiosztott memória mennyiségétől függően be van állítva:

Memória mérete shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GiB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GiB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

megosztott_memória_típus

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Kiválasztja a fő megosztott memóriaterülethez használt megosztott memória implementációját.
Adattípus enumerálás
Alapértelmezett érték mmap
Engedélyezett értékek mmap
Paraméter típusa csak olvasható
Documentation megosztott_memória_típus

temp_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Az egyes adatbázis-munkamenetek által használt ideiglenes pufferek maximális számát adja meg.
Adattípus egész szám
Alapértelmezett érték 1024
Engedélyezett értékek 100-1073741823
Paraméter típusa dynamic
Documentation temp_buffers

work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a belső rendezési műveletek és kivonattáblák által használandó memória mennyiségét, mielőtt ideiglenes lemezfájlokba ír.
Adattípus egész szám
Alapértelmezett érték 4096
Engedélyezett értékek 4096-2097151
Paraméter típusa dynamic
Documentation work_mem

Description

A work_mem PostgreSQL paramétere szabályozza az egyes belső műveletekhez lefoglalt memória mennyiségét az egyes adatbázis-munkamenetek magánmemóriája területén. Ilyen műveletek például a rendezés és a kivonatolás.

A megosztott pufferek, amelyek a megosztott memóriaterületen vannak, ellentétben a work_mem egyenkénti munkamenet vagy lekérdezés privát memóriaterében van lefoglalva. A megfelelő work_mem méret beállításával jelentősen javíthatja ezeknek a műveleteknek a hatékonyságát, és csökkentheti az ideiglenes adatok lemezre írásának szükségességét.

Kulcsfontosságú pontok

  • Privát kapcsolati memória: work_mem az egyes adatbázis-munkamenetek által használt magánmemória része. Ez a memória különbözik a használt megosztott memóriaterülettől shared_buffers .
  • Lekérdezésspecifikus használat: Nem minden munkamenetet vagy lekérdezést használ work_mem. Egyszerű lekérdezések, mint például SELECT 1, valószínűleg nem igényelnek work_mem. Az összetett lekérdezések azonban, amelyek olyan műveleteket foglalnak magukban, mint a rendezés vagy a kivonatolás, egy vagy több work_mem adattömböt fogyaszthatnak.
  • Párhuzamos műveletek: Több párhuzamos háttérrendszerre kiterjedő lekérdezések esetén minden háttérrendszer egy vagy több adattömbet work_memhasználhat.

Monitorozás és work_mem módosítása

Elengedhetetlen a rendszer teljesítményének folyamatos monitorozása és szükség szerinti módosítása work_mem , elsősorban akkor, ha a rendezési vagy kivonatolási műveletekhez kapcsolódó lekérdezés-végrehajtási idő lassú. A teljesítmény monitorozásának módjai az Azure Portalon elérhető eszközökkel:

  • Lekérdezési teljesítményelemzés: Az ideiglenes fájlokat létrehozó lekérdezések azonosításához tekintse meg a leggyakoribb lekérdezéseket ideiglenes fájlok lapján. Ez a helyzet arra utal , hogy növelni kell a növekedést work_mem.
  • Hibaelhárítási útmutatók: A hibaelhárítási útmutatók Magas ideiglenes fájlok lapján azonosíthatja a problémás lekérdezéseket.
Granuláris beállítás

A paraméter kezelése work_mem során gyakran hatékonyabb egy részletes beállítási módszer alkalmazása a globális érték beállítása helyett. Ez a megközelítés biztosítja, hogy a memóriát körültekintően a folyamatok és a felhasználók konkrét igényei alapján foglalja le. Emellett minimálisra csökkenti a memóriahiányból adódó problémák kockázatát. Az alábbiak szerint végezheti el a következő lépéseket:

  • Felhasználói szint: Ha egy adott felhasználó elsősorban aggregációs vagy jelentéskészítési feladatokban vesz részt, amelyek memóriaigényesek, fontolja meg az adott felhasználó értékének work_mem testreszabását. ALTER ROLE A parancs használatával javíthatja a felhasználó műveleteinek teljesítményét.

  • Függvény-/eljárásszint: Ha bizonyos függvények vagy eljárások jelentős ideiglenes fájlokat hoznak létre, előnyös lehet az work_mem érték növelése az adott függvény vagy eljárás szintjén. Használja a ALTER FUNCTION vagy ALTER PROCEDURE parancsot, hogy pontosabban lefoglaljon több memóriát ezekhez a műveletekhez.

  • Adatbázisszint: Ha work_mem csak bizonyos adatbázisok hoznak létre nagy mennyiségű ideiglenes fájlt, módosítsa az adatbázis szintjén.

  • Globális szint: Ha a rendszer elemzése azt mutatja, hogy a lekérdezések többsége kis ideiglenes fájlokat hoz létre, míg csak kevesen hoznak létre nagy fájlokat, érdemes lehet globálisan növelni az work_mem értéket. Ez a művelet megkönnyíti a legtöbb lekérdezés feldolgozását a memóriában, így elkerülheti a lemezalapú műveleteket, és javíthatja a hatékonyságot. Azonban mindig legyen óvatos, és figyelje a kiszolgáló memóriakihasználtságát, hogy képes legyen kezelni a megnövekedett work_mem értéket.

A rendezési műveletek minimális work_mem értékének meghatározása

Ha meg szeretné keresni egy adott lekérdezés minimális work_mem értékét, különösen azt, amely ideiglenes lemezfájlokat hoz létre a rendezési folyamat során, először a lekérdezés végrehajtása során létrehozott ideiglenes fájlméretet kell figyelembe vennie. Ha például egy lekérdezés 20 MB-os ideiglenes fájlt hoz létre:

  1. Csatlakozzon az adatbázishoz a psql vagy az előnyben részesített PostgreSQL-ügyfél használatával.
  2. Állítson be egy 20 MB-nál valamivel nagyobb kezdeti work_mem értéket a további fejlécek számba vételéhez a memóriában történő feldolgozáskor. Használjon egy parancsot, például: SET work_mem TO '25MB'.
  3. Futtassa EXPLAIN ANALYZE a problémás lekérdezést ugyanabban a munkamenetben.
  4. Tekintse át a kimenetet "Sort Method: quicksort Memory: xkB". Ha jelzi "external merge Disk: xkB", növelje az work_mem értéket lépésenként, és tesztelje újra, amíg meg nem jelenik "quicksort Memory". A "quicksort Memory" megjelenése jelzi, hogy a lekérdezés most már a memóriában működik.
  5. Miután meghatározta az értéket ezzel a módszerrel, globálisan vagy részletesebb szinteken (a korábban leírtak szerint) alkalmazhatja a működési igényeinek megfelelően.

autovacuum_work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az egyes autovacuum-feldolgozó folyamatok által használandó maximális memóriát.
Adattípus egész szám
Alapértelmezett érték -1
Engedélyezett értékek -1-2097151
Paraméter típusa dynamic
Documentation autovacuum_work_mem

dynamic_megosztott_memória_típus

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Kiválasztja a használt dinamikus megosztott memória implementációját.
Adattípus enumerálás
Alapértelmezett érték posix
Engedélyezett értékek posix
Paraméter típusa csak olvasható
Documentation dinamikus_megosztott_memória_típus

hash_mem_multiplier (hash-memória-szorzó)

Attribute Érték
Kategória Erőforrás-használat / Memória
Description A kivonattáblákhoz használandó work_mem többszöröse.
Adattípus Numerikus
Alapértelmezett érték 1
Engedélyezett értékek 1-1000
Paraméter típusa dynamic
Documentation hash_mem_multiplier

huge_pages

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Engedélyezi/letiltja a hatalmas memórialapok használatát. Ez a beállítás nem alkalmazható a 4 virtuális magnál kevesebb virtuális magot futtató kiszolgálókra.
Adattípus enumerálás
Alapértelmezett érték try
Engedélyezett értékek on,off,try
Paraméter típusa statikus
Documentation nagy_oldalak

Description

A hatalmas lapok olyan funkciók, amelyek lehetővé teszik a memória nagyobb blokkokban való kezelését. A szabványos 4 KB-os oldalak helyett általában legfeljebb 2 MB méretű blokkokat kezelhet.

A hatalmas oldalak használata olyan teljesítménybeli előnyöket kínálhat, amelyek hatékonyan ki tudják kapcsolni a processzort:

  • Csökkentik a memóriakezelési feladatokhoz, például kevesebb fordítási lookaside pufferhez (TLB) kapcsolódó többletterhelést.
  • Lerövidítik a memóriakezeléshez szükséges időt.

A PostgreSQL-ben a hatalmas oldalakat csak a megosztott memóriaterületen használhatja. A megosztott memóriaterület jelentős része megosztott pufferekhez van lefoglalva.

Egy másik előnye, hogy a hatalmas oldalak megakadályozzák a megosztott memóriaterület lemezre való felcserélését, ami tovább stabilizálja a teljesítményt.

Recommendations

  • A jelentős memóriaerőforrásokkal rendelkező kiszolgálók esetében kerülje a hatalmas lapok letiltását. A hatalmas lapok letiltása ronthatja a teljesítményt.
  • Ha egy kisebb kiszolgálóval kezd, amely nem támogatja a hatalmas oldalakat, de várhatóan felskáláz egy olyan kiszolgálóra, amely igen, tartsa a beállítást huge_pages a zökkenőmentes átmenet és az TRY optimális teljesítmény érdekében.

Azure-specifikus megjegyzések

A négy vagy több virtuális processzormaggal rendelkező kiszolgálók esetében a hatalmas lapok automatikusan lefoglalásra kerülnek az alapul szolgáló operációs rendszerből. A szolgáltatás nem érhető el négynél kevesebb virtuális maggal rendelkező kiszolgálók esetében. A hatalmas lapok száma automatikusan módosul, ha a megosztott memória beállításai módosulnak, beleértve a shared_buffersmódosításokat is.

logical_decoding_work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a logikai dekódoláshoz használandó memória maximális méretét.
Adattípus egész szám
Alapértelmezett érték 65536
Engedélyezett értékek 64-2147483647
Paraméter típusa dynamic
Documentation logical_decoding_work_mem

karbantartási_munka_memória

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az olyan karbantartási műveletekhez használandó maximális memóriát, mint a VACUUM, az Index létrehozása.
Adattípus egész szám
Alapértelmezett érték A kiszolgáló számára lefoglalt erőforrásoktól (virtuális magoktól, RAM-októl vagy lemezterülettől) függ.
Engedélyezett értékek 1024-2097151
Paraméter típusa dynamic
Documentation maintenance_work_mem

Description

maintenance_work_mem egy konfigurációs paraméter a PostgreSQL-ben. Ez szabályozza a karbantartási műveletekhez lefoglalt memória mennyiségét, például VACUUM: , CREATE INDEXés ALTER TABLE. Ellentétben work_mema lekérdezési műveletek memóriafoglalásával, maintenance_work_mem az adatbázis struktúráját karbantartó és optimalizáló feladatokhoz van fenntartva.

! [MEGJEGYZÉS] A túlzottan agresszív értékek beállítása maintenance_work_mem időnként memóriahibahoz vezethet a rendszerben. A paraméter módosítása előtt rendkívül fontos tisztában lenni a kiszolgálón rendelkezésre álló memória mennyiségével és az egyidejű műveletek számával, amelyek memóriát foglalhatnak le a korábban ismertetett feladatokhoz.

Kulcsfontosságú pontok

  • Vákuummemória sapka: Ha növelni szeretné az elhalt tuple-ok eltávolításának sebességét, vegye figyelembe, hogy maintenance_work_mem az elhalt tuple-azonosítók gyűjtésére beépített korlátozás vonatkozik. Ehhez a folyamathoz legfeljebb 1 GB memóriát használhat.
  • A memória elkülönítése az autovacuumhoz: A beállítással autovacuum_work_mem szabályozhatja a memóriát, amelyet az autovacuum-műveletek egymástól függetlenül használnak. Ez a beállítás az maintenance_work_mem egy része. Eldöntheti, hogy az autovacuum mennyi memóriát használ anélkül, hogy befolyásolná az egyéb karbantartási feladatok és adatdefiníciós műveletek memóriafoglalását.

Azure-specifikus megjegyzések

A kiszolgálóparaméter alapértelmezett értékét a maintenance_work_mem rugalmas Azure Database for PostgreSQL-kiszolgáló példányának kiépítésekor számítja ki a rendszer a számításhoz kiválasztott terméknév alapján. A rugalmas kiszolgálót támogató számítás termékkijelölésének későbbi módosítása nem befolyásolja az adott példány kiszolgálóparaméterének alapértelmezett értékét maintenance_work_mem .

Minden alkalommal, amikor módosítja a példányhoz rendelt terméket, a maintenance_work_mem paraméter értékét is az alábbi képlet értékei alapján kell módosítania.

Az érték maintenance_work_mem kiszámításához használt képlet az .(long)(82.5 * ln(memoryGiB) + 40) * 1024

Az előző képlet alapján az alábbi táblázat felsorolja azokat az értékeket, amelyekre a kiszolgálóparaméter a kiosztott memória mennyiségétől függően be van állítva:

Memória mérete karbantartási_munka_memória
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GiB 332 800 KiB
48 GiB 367 616 KiB
64 GiB 392,192 KiB
80 GiB 410 624 KiB
128 GiB 450 560 KiB
160 GiB 468 992 KiB
192 GiB 484 352 KiB
256 GiB 508,928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_előkészített_tranzakciók

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az egyidejűleg előkészített tranzakciók maximális számát. Replikakiszolgáló futtatásakor ezt a paramétert ugyanarra vagy magasabbra kell állítania, mint az elsődleges kiszolgálón.
Adattípus egész szám
Alapértelmezett érték 0
Engedélyezett értékek 0-262143
Paraméter típusa statikus
Documentation max_prepared_transactions

max_stack_depth

Attribute Érték
Kategória Erőforrás-használat / Memória
Description A maximális veremmélység beállítása kilobájtban.
Adattípus egész szám
Alapértelmezett érték 2048
Engedélyezett értékek 2048
Paraméter típusa csak olvasható
Documentation max_stack_depth

shared_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a kiszolgáló által használt megosztott memóriapufferek számát. Az egység 8kb. Az engedélyezett értékek a rendelkezésre álló memória 10%- 75%-ának tartományán belül vannak.
Adattípus egész szám
Alapértelmezett érték A kiszolgáló számára lefoglalt erőforrásoktól (virtuális magoktól, RAM-októl vagy lemezterülettől) függ.
Engedélyezett értékek 16-1073741823
Paraméter típusa statikus
Documentation shared_buffers

Description

A shared_buffers konfigurációs paraméter határozza meg a PostgreSQL-adatbázis számára az adatok puffereléséhez lefoglalt rendszermemória mennyiségét. Központi memóriakészletként szolgál, amely minden adatbázis-folyamat számára elérhető.

Amikor adatokra van szükség, az adatbázis-folyamat először ellenőrzi a megosztott puffert. Ha a szükséges adatok megtalálhatók, gyorsan lekérésre kerülnek, és elkerülik az időigényesebb lemezolvasást. A megosztott pufferek közvetítőként szolgálnak az adatbázis-folyamatok és a lemez között, és hatékonyan csökkentik a szükséges I/O-műveletek számát.

Azure-specifikus megjegyzések

A kiszolgálóparaméter alapértelmezett értékét a shared_buffers rugalmas Azure Database for PostgreSQL-kiszolgáló példányának kiépítésekor számítja ki a rendszer a számításhoz kiválasztott terméknév alapján. A rugalmas kiszolgálót támogató számítás termékkijelölésének későbbi változásai nem befolyásolják az adott példány kiszolgálóparaméterének alapértelmezett értékét shared_buffers .

Minden alkalommal, amikor módosítja a példányhoz rendelt terméket, a paraméter értékét shared_buffers is módosítania kell az alábbi képletek értékeinek megfelelően.

Legfeljebb 2 GiB memóriával rendelkező virtuális gépek esetén az érték shared_buffers kiszámításához használt képlet az memoryGib * 16384.

A 2 GiB-nél nagyobb virtuális gépek esetében az érték shared_buffers kiszámításához használt képlet az memoryGib * 32768.

Az előző képlet alapján az alábbi táblázat felsorolja azokat az értékeket, amelyekre a kiszolgálóparaméter a kiosztott memória mennyiségétől függően be van állítva:

Memória mérete shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GiB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GiB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

megosztott_memória_típus

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Kiválasztja a fő megosztott memóriaterülethez használt megosztott memória implementációját.
Adattípus enumerálás
Alapértelmezett érték mmap
Engedélyezett értékek mmap
Paraméter típusa csak olvasható
Documentation megosztott_memória_típus

temp_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Az egyes adatbázis-munkamenetek által használt ideiglenes pufferek maximális számát adja meg.
Adattípus egész szám
Alapértelmezett érték 1024
Engedélyezett értékek 100-1073741823
Paraméter típusa dynamic
Documentation temp_buffers

work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a belső rendezési műveletek és kivonattáblák által használandó memória mennyiségét, mielőtt ideiglenes lemezfájlokba ír.
Adattípus egész szám
Alapértelmezett érték 4096
Engedélyezett értékek 4096-2097151
Paraméter típusa dynamic
Documentation work_mem

Description

A work_mem PostgreSQL paramétere szabályozza az egyes belső műveletekhez lefoglalt memória mennyiségét az egyes adatbázis-munkamenetek magánmemóriája területén. Ilyen műveletek például a rendezés és a kivonatolás.

A megosztott pufferek, amelyek a megosztott memóriaterületen vannak, ellentétben a work_mem egyenkénti munkamenet vagy lekérdezés privát memóriaterében van lefoglalva. A megfelelő work_mem méret beállításával jelentősen javíthatja ezeknek a műveleteknek a hatékonyságát, és csökkentheti az ideiglenes adatok lemezre írásának szükségességét.

Kulcsfontosságú pontok

  • Privát kapcsolati memória: work_mem az egyes adatbázis-munkamenetek által használt magánmemória része. Ez a memória különbözik a használt megosztott memóriaterülettől shared_buffers .
  • Lekérdezésspecifikus használat: Nem minden munkamenetet vagy lekérdezést használ work_mem. Egyszerű lekérdezések, mint például SELECT 1, valószínűleg nem igényelnek work_mem. Az összetett lekérdezések azonban, amelyek olyan műveleteket foglalnak magukban, mint a rendezés vagy a kivonatolás, egy vagy több work_mem adattömböt fogyaszthatnak.
  • Párhuzamos műveletek: Több párhuzamos háttérrendszerre kiterjedő lekérdezések esetén minden háttérrendszer egy vagy több adattömbet work_memhasználhat.

Monitorozás és work_mem módosítása

Elengedhetetlen a rendszer teljesítményének folyamatos monitorozása és szükség szerinti módosítása work_mem , elsősorban akkor, ha a rendezési vagy kivonatolási műveletekhez kapcsolódó lekérdezés-végrehajtási idő lassú. A teljesítmény monitorozásának módjai az Azure Portalon elérhető eszközökkel:

  • Lekérdezési teljesítményelemzés: Az ideiglenes fájlokat létrehozó lekérdezések azonosításához tekintse meg a leggyakoribb lekérdezéseket ideiglenes fájlok lapján. Ez a helyzet arra utal , hogy növelni kell a növekedést work_mem.
  • Hibaelhárítási útmutatók: A hibaelhárítási útmutatók Magas ideiglenes fájlok lapján azonosíthatja a problémás lekérdezéseket.
Granuláris beállítás

A paraméter kezelése work_mem során gyakran hatékonyabb egy részletes beállítási módszer alkalmazása a globális érték beállítása helyett. Ez a megközelítés biztosítja, hogy a memóriát körültekintően a folyamatok és a felhasználók konkrét igényei alapján foglalja le. Emellett minimálisra csökkenti a memóriahiányból adódó problémák kockázatát. Az alábbiak szerint végezheti el a következő lépéseket:

  • Felhasználói szint: Ha egy adott felhasználó elsősorban aggregációs vagy jelentéskészítési feladatokban vesz részt, amelyek memóriaigényesek, fontolja meg az adott felhasználó értékének work_mem testreszabását. ALTER ROLE A parancs használatával javíthatja a felhasználó műveleteinek teljesítményét.

  • Függvény-/eljárásszint: Ha bizonyos függvények vagy eljárások jelentős ideiglenes fájlokat hoznak létre, előnyös lehet az work_mem érték növelése az adott függvény vagy eljárás szintjén. Használja a ALTER FUNCTION vagy ALTER PROCEDURE parancsot, hogy pontosabban lefoglaljon több memóriát ezekhez a műveletekhez.

  • Adatbázisszint: Ha work_mem csak bizonyos adatbázisok hoznak létre nagy mennyiségű ideiglenes fájlt, módosítsa az adatbázis szintjén.

  • Globális szint: Ha a rendszer elemzése azt mutatja, hogy a lekérdezések többsége kis ideiglenes fájlokat hoz létre, míg csak kevesen hoznak létre nagy fájlokat, érdemes lehet globálisan növelni az work_mem értéket. Ez a művelet megkönnyíti a legtöbb lekérdezés feldolgozását a memóriában, így elkerülheti a lemezalapú műveleteket, és javíthatja a hatékonyságot. Azonban mindig legyen óvatos, és figyelje a kiszolgáló memóriakihasználtságát, hogy képes legyen kezelni a megnövekedett work_mem értéket.

A rendezési műveletek minimális work_mem értékének meghatározása

Ha meg szeretné keresni egy adott lekérdezés minimális work_mem értékét, különösen azt, amely ideiglenes lemezfájlokat hoz létre a rendezési folyamat során, először a lekérdezés végrehajtása során létrehozott ideiglenes fájlméretet kell figyelembe vennie. Ha például egy lekérdezés 20 MB-os ideiglenes fájlt hoz létre:

  1. Csatlakozzon az adatbázishoz a psql vagy az előnyben részesített PostgreSQL-ügyfél használatával.
  2. Állítson be egy 20 MB-nál valamivel nagyobb kezdeti work_mem értéket a további fejlécek számba vételéhez a memóriában történő feldolgozáskor. Használjon egy parancsot, például: SET work_mem TO '25MB'.
  3. Futtassa EXPLAIN ANALYZE a problémás lekérdezést ugyanabban a munkamenetben.
  4. Tekintse át a kimenetet "Sort Method: quicksort Memory: xkB". Ha jelzi "external merge Disk: xkB", növelje az work_mem értéket lépésenként, és tesztelje újra, amíg meg nem jelenik "quicksort Memory". A "quicksort Memory" megjelenése jelzi, hogy a lekérdezés most már a memóriában működik.
  5. Miután meghatározta az értéket ezzel a módszerrel, globálisan vagy részletesebb szinteken (a korábban leírtak szerint) alkalmazhatja a működési igényeinek megfelelően.

autovacuum_work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az egyes autovacuum-feldolgozó folyamatok által használandó maximális memóriát.
Adattípus egész szám
Alapértelmezett érték -1
Engedélyezett értékek -1-2097151
Paraméter típusa dynamic
Documentation autovacuum_work_mem

dynamic_megosztott_memória_típus

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Kiválasztja a használt dinamikus megosztott memória implementációját.
Adattípus enumerálás
Alapértelmezett érték posix
Engedélyezett értékek posix
Paraméter típusa csak olvasható
Documentation dinamikus_megosztott_memória_típus

hash_mem_multiplier (hash-memória-szorzó)

Attribute Érték
Kategória Erőforrás-használat / Memória
Description A kivonattáblákhoz használandó work_mem többszöröse.
Adattípus Numerikus
Alapértelmezett érték 1
Engedélyezett értékek 1-1000
Paraméter típusa dynamic
Documentation hash_mem_multiplier

huge_pages

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Engedélyezi/letiltja a hatalmas memórialapok használatát. Ez a beállítás nem alkalmazható a 4 virtuális magnál kevesebb virtuális magot futtató kiszolgálókra.
Adattípus enumerálás
Alapértelmezett érték try
Engedélyezett értékek on,off,try
Paraméter típusa statikus
Documentation nagy_oldalak

Description

A hatalmas lapok olyan funkciók, amelyek lehetővé teszik a memória nagyobb blokkokban való kezelését. A szabványos 4 KB-os oldalak helyett általában legfeljebb 2 MB méretű blokkokat kezelhet.

A hatalmas oldalak használata olyan teljesítménybeli előnyöket kínálhat, amelyek hatékonyan ki tudják kapcsolni a processzort:

  • Csökkentik a memóriakezelési feladatokhoz, például kevesebb fordítási lookaside pufferhez (TLB) kapcsolódó többletterhelést.
  • Lerövidítik a memóriakezeléshez szükséges időt.

A PostgreSQL-ben a hatalmas oldalakat csak a megosztott memóriaterületen használhatja. A megosztott memóriaterület jelentős része megosztott pufferekhez van lefoglalva.

Egy másik előnye, hogy a hatalmas oldalak megakadályozzák a megosztott memóriaterület lemezre való felcserélését, ami tovább stabilizálja a teljesítményt.

Recommendations

  • A jelentős memóriaerőforrásokkal rendelkező kiszolgálók esetében kerülje a hatalmas lapok letiltását. A hatalmas lapok letiltása ronthatja a teljesítményt.
  • Ha egy kisebb kiszolgálóval kezd, amely nem támogatja a hatalmas oldalakat, de várhatóan felskáláz egy olyan kiszolgálóra, amely igen, tartsa a beállítást huge_pages a zökkenőmentes átmenet és az TRY optimális teljesítmény érdekében.

Azure-specifikus megjegyzések

A négy vagy több virtuális processzormaggal rendelkező kiszolgálók esetében a hatalmas lapok automatikusan lefoglalásra kerülnek az alapul szolgáló operációs rendszerből. A szolgáltatás nem érhető el négynél kevesebb virtuális maggal rendelkező kiszolgálók esetében. A hatalmas lapok száma automatikusan módosul, ha a megosztott memória beállításai módosulnak, beleértve a shared_buffersmódosításokat is.

karbantartási_munka_memória

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az olyan karbantartási műveletekhez használandó maximális memóriát, mint a VACUUM, az Index létrehozása.
Adattípus egész szám
Alapértelmezett érték A kiszolgáló számára lefoglalt erőforrásoktól (virtuális magoktól, RAM-októl vagy lemezterülettől) függ.
Engedélyezett értékek 1024-2097151
Paraméter típusa dynamic
Documentation maintenance_work_mem

Description

maintenance_work_mem egy konfigurációs paraméter a PostgreSQL-ben. Ez szabályozza a karbantartási műveletekhez lefoglalt memória mennyiségét, például VACUUM: , CREATE INDEXés ALTER TABLE. Ellentétben work_mema lekérdezési műveletek memóriafoglalásával, maintenance_work_mem az adatbázis struktúráját karbantartó és optimalizáló feladatokhoz van fenntartva.

! [MEGJEGYZÉS] A túlzottan agresszív értékek beállítása maintenance_work_mem időnként memóriahibahoz vezethet a rendszerben. A paraméter módosítása előtt rendkívül fontos tisztában lenni a kiszolgálón rendelkezésre álló memória mennyiségével és az egyidejű műveletek számával, amelyek memóriát foglalhatnak le a korábban ismertetett feladatokhoz.

Kulcsfontosságú pontok

  • Vákuummemória sapka: Ha növelni szeretné az elhalt tuple-ok eltávolításának sebességét, vegye figyelembe, hogy maintenance_work_mem az elhalt tuple-azonosítók gyűjtésére beépített korlátozás vonatkozik. Ehhez a folyamathoz legfeljebb 1 GB memóriát használhat.
  • A memória elkülönítése az autovacuumhoz: A beállítással autovacuum_work_mem szabályozhatja a memóriát, amelyet az autovacuum-műveletek egymástól függetlenül használnak. Ez a beállítás az maintenance_work_mem egy része. Eldöntheti, hogy az autovacuum mennyi memóriát használ anélkül, hogy befolyásolná az egyéb karbantartási feladatok és adatdefiníciós műveletek memóriafoglalását.

Azure-specifikus megjegyzések

A kiszolgálóparaméter alapértelmezett értékét a maintenance_work_mem rugalmas Azure Database for PostgreSQL-kiszolgáló példányának kiépítésekor számítja ki a rendszer a számításhoz kiválasztott terméknév alapján. A rugalmas kiszolgálót támogató számítás termékkijelölésének későbbi módosítása nem befolyásolja az adott példány kiszolgálóparaméterének alapértelmezett értékét maintenance_work_mem .

Minden alkalommal, amikor módosítja a példányhoz rendelt terméket, a maintenance_work_mem paraméter értékét is az alábbi képlet értékei alapján kell módosítania.

Az érték maintenance_work_mem kiszámításához használt képlet az .(long)(82.5 * ln(memoryGiB) + 40) * 1024

Az előző képlet alapján az alábbi táblázat felsorolja azokat az értékeket, amelyekre a kiszolgálóparaméter a kiosztott memória mennyiségétől függően be van állítva:

Memória mérete karbantartási_munka_memória
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GiB 332 800 KiB
48 GiB 367 616 KiB
64 GiB 392,192 KiB
80 GiB 410 624 KiB
128 GiB 450 560 KiB
160 GiB 468 992 KiB
192 GiB 484 352 KiB
256 GiB 508,928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_előkészített_tranzakciók

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az egyidejűleg előkészített tranzakciók maximális számát. Replikakiszolgáló futtatásakor ezt a paramétert ugyanarra vagy magasabbra kell állítania, mint az elsődleges kiszolgálón.
Adattípus egész szám
Alapértelmezett érték 0
Engedélyezett értékek 0-262143
Paraméter típusa statikus
Documentation max_prepared_transactions

max_stack_depth

Attribute Érték
Kategória Erőforrás-használat / Memória
Description A maximális veremmélység beállítása kilobájtban.
Adattípus egész szám
Alapértelmezett érték 2048
Engedélyezett értékek 2048
Paraméter típusa csak olvasható
Documentation max_stack_depth

shared_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a kiszolgáló által használt megosztott memóriapufferek számát. Az egység 8kb. Az engedélyezett értékek a rendelkezésre álló memória 10%- 75%-ának tartományán belül vannak.
Adattípus egész szám
Alapértelmezett érték A kiszolgáló számára lefoglalt erőforrásoktól (virtuális magoktól, RAM-októl vagy lemezterülettől) függ.
Engedélyezett értékek 16-1073741823
Paraméter típusa statikus
Documentation shared_buffers

Description

A shared_buffers konfigurációs paraméter határozza meg a PostgreSQL-adatbázis számára az adatok puffereléséhez lefoglalt rendszermemória mennyiségét. Központi memóriakészletként szolgál, amely minden adatbázis-folyamat számára elérhető.

Amikor adatokra van szükség, az adatbázis-folyamat először ellenőrzi a megosztott puffert. Ha a szükséges adatok megtalálhatók, gyorsan lekérésre kerülnek, és elkerülik az időigényesebb lemezolvasást. A megosztott pufferek közvetítőként szolgálnak az adatbázis-folyamatok és a lemez között, és hatékonyan csökkentik a szükséges I/O-műveletek számát.

Azure-specifikus megjegyzések

A kiszolgálóparaméter alapértelmezett értékét a shared_buffers rugalmas Azure Database for PostgreSQL-kiszolgáló példányának kiépítésekor számítja ki a rendszer a számításhoz kiválasztott terméknév alapján. A rugalmas kiszolgálót támogató számítás termékkijelölésének későbbi változásai nem befolyásolják az adott példány kiszolgálóparaméterének alapértelmezett értékét shared_buffers .

Minden alkalommal, amikor módosítja a példányhoz rendelt terméket, a paraméter értékét shared_buffers is módosítania kell az alábbi képletek értékeinek megfelelően.

Legfeljebb 2 GiB memóriával rendelkező virtuális gépek esetén az érték shared_buffers kiszámításához használt képlet az memoryGib * 16384.

A 2 GiB-nél nagyobb virtuális gépek esetében az érték shared_buffers kiszámításához használt képlet az memoryGib * 32768.

Az előző képlet alapján az alábbi táblázat felsorolja azokat az értékeket, amelyekre a kiszolgálóparaméter a kiosztott memória mennyiségétől függően be van állítva:

Memória mérete shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GiB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GiB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

megosztott_memória_típus

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Kiválasztja a fő megosztott memóriaterülethez használt megosztott memória implementációját.
Adattípus enumerálás
Alapértelmezett érték mmap
Engedélyezett értékek mmap
Paraméter típusa csak olvasható
Documentation megosztott_memória_típus

temp_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Az egyes adatbázis-munkamenetek által használt ideiglenes pufferek maximális számát adja meg.
Adattípus egész szám
Alapértelmezett érték 1024
Engedélyezett értékek 100-1073741823
Paraméter típusa dynamic
Documentation temp_buffers

work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a belső rendezési műveletek és kivonattáblák által használandó memória mennyiségét, mielőtt ideiglenes lemezfájlokba ír.
Adattípus egész szám
Alapértelmezett érték 4096
Engedélyezett értékek 4096-2097151
Paraméter típusa dynamic
Documentation work_mem

Description

A work_mem PostgreSQL paramétere szabályozza az egyes belső műveletekhez lefoglalt memória mennyiségét az egyes adatbázis-munkamenetek magánmemóriája területén. Ilyen műveletek például a rendezés és a kivonatolás.

A megosztott pufferek, amelyek a megosztott memóriaterületen vannak, ellentétben a work_mem egyenkénti munkamenet vagy lekérdezés privát memóriaterében van lefoglalva. A megfelelő work_mem méret beállításával jelentősen javíthatja ezeknek a műveleteknek a hatékonyságát, és csökkentheti az ideiglenes adatok lemezre írásának szükségességét.

Kulcsfontosságú pontok

  • Privát kapcsolati memória: work_mem az egyes adatbázis-munkamenetek által használt magánmemória része. Ez a memória különbözik a használt megosztott memóriaterülettől shared_buffers .
  • Lekérdezésspecifikus használat: Nem minden munkamenetet vagy lekérdezést használ work_mem. Egyszerű lekérdezések, mint például SELECT 1, valószínűleg nem igényelnek work_mem. Az összetett lekérdezések azonban, amelyek olyan műveleteket foglalnak magukban, mint a rendezés vagy a kivonatolás, egy vagy több work_mem adattömböt fogyaszthatnak.
  • Párhuzamos műveletek: Több párhuzamos háttérrendszerre kiterjedő lekérdezések esetén minden háttérrendszer egy vagy több adattömbet work_memhasználhat.

Monitorozás és work_mem módosítása

Elengedhetetlen a rendszer teljesítményének folyamatos monitorozása és szükség szerinti módosítása work_mem , elsősorban akkor, ha a rendezési vagy kivonatolási műveletekhez kapcsolódó lekérdezés-végrehajtási idő lassú. A teljesítmény monitorozásának módjai az Azure Portalon elérhető eszközökkel:

  • Lekérdezési teljesítményelemzés: Az ideiglenes fájlokat létrehozó lekérdezések azonosításához tekintse meg a leggyakoribb lekérdezéseket ideiglenes fájlok lapján. Ez a helyzet arra utal , hogy növelni kell a növekedést work_mem.
  • Hibaelhárítási útmutatók: A hibaelhárítási útmutatók Magas ideiglenes fájlok lapján azonosíthatja a problémás lekérdezéseket.
Granuláris beállítás

A paraméter kezelése work_mem során gyakran hatékonyabb egy részletes beállítási módszer alkalmazása a globális érték beállítása helyett. Ez a megközelítés biztosítja, hogy a memóriát körültekintően a folyamatok és a felhasználók konkrét igényei alapján foglalja le. Emellett minimálisra csökkenti a memóriahiányból adódó problémák kockázatát. Az alábbiak szerint végezheti el a következő lépéseket:

  • Felhasználói szint: Ha egy adott felhasználó elsősorban aggregációs vagy jelentéskészítési feladatokban vesz részt, amelyek memóriaigényesek, fontolja meg az adott felhasználó értékének work_mem testreszabását. ALTER ROLE A parancs használatával javíthatja a felhasználó műveleteinek teljesítményét.

  • Függvény-/eljárásszint: Ha bizonyos függvények vagy eljárások jelentős ideiglenes fájlokat hoznak létre, előnyös lehet az work_mem érték növelése az adott függvény vagy eljárás szintjén. Használja a ALTER FUNCTION vagy ALTER PROCEDURE parancsot, hogy pontosabban lefoglaljon több memóriát ezekhez a műveletekhez.

  • Adatbázisszint: Ha work_mem csak bizonyos adatbázisok hoznak létre nagy mennyiségű ideiglenes fájlt, módosítsa az adatbázis szintjén.

  • Globális szint: Ha a rendszer elemzése azt mutatja, hogy a lekérdezések többsége kis ideiglenes fájlokat hoz létre, míg csak kevesen hoznak létre nagy fájlokat, érdemes lehet globálisan növelni az work_mem értéket. Ez a művelet megkönnyíti a legtöbb lekérdezés feldolgozását a memóriában, így elkerülheti a lemezalapú műveleteket, és javíthatja a hatékonyságot. Azonban mindig legyen óvatos, és figyelje a kiszolgáló memóriakihasználtságát, hogy képes legyen kezelni a megnövekedett work_mem értéket.

A rendezési műveletek minimális work_mem értékének meghatározása

Ha meg szeretné keresni egy adott lekérdezés minimális work_mem értékét, különösen azt, amely ideiglenes lemezfájlokat hoz létre a rendezési folyamat során, először a lekérdezés végrehajtása során létrehozott ideiglenes fájlméretet kell figyelembe vennie. Ha például egy lekérdezés 20 MB-os ideiglenes fájlt hoz létre:

  1. Csatlakozzon az adatbázishoz a psql vagy az előnyben részesített PostgreSQL-ügyfél használatával.
  2. Állítson be egy 20 MB-nál valamivel nagyobb kezdeti work_mem értéket a további fejlécek számba vételéhez a memóriában történő feldolgozáskor. Használjon egy parancsot, például: SET work_mem TO '25MB'.
  3. Futtassa EXPLAIN ANALYZE a problémás lekérdezést ugyanabban a munkamenetben.
  4. Tekintse át a kimenetet "Sort Method: quicksort Memory: xkB". Ha jelzi "external merge Disk: xkB", növelje az work_mem értéket lépésenként, és tesztelje újra, amíg meg nem jelenik "quicksort Memory". A "quicksort Memory" megjelenése jelzi, hogy a lekérdezés most már a memóriában működik.
  5. Miután meghatározta az értéket ezzel a módszerrel, globálisan vagy részletesebb szinteken (a korábban leírtak szerint) alkalmazhatja a működési igényeinek megfelelően.

autovacuum_work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az egyes autovacuum-feldolgozó folyamatok által használandó maximális memóriát.
Adattípus egész szám
Alapértelmezett érték -1
Engedélyezett értékek -1-2097151
Paraméter típusa dynamic
Documentation autovacuum_work_mem

dynamic_megosztott_memória_típus

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Kiválasztja a használt dinamikus megosztott memória implementációját.
Adattípus enumerálás
Alapértelmezett érték posix
Engedélyezett értékek posix
Paraméter típusa csak olvasható
Documentation dinamikus_megosztott_memória_típus

huge_pages

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Engedélyezi/letiltja a hatalmas memórialapok használatát. Ez a beállítás nem alkalmazható a 4 virtuális magnál kevesebb virtuális magot futtató kiszolgálókra.
Adattípus enumerálás
Alapértelmezett érték try
Engedélyezett értékek on,off,try
Paraméter típusa statikus
Documentation nagy_oldalak

Description

A hatalmas lapok olyan funkciók, amelyek lehetővé teszik a memória nagyobb blokkokban való kezelését. A szabványos 4 KB-os oldalak helyett általában legfeljebb 2 MB méretű blokkokat kezelhet.

A hatalmas oldalak használata olyan teljesítménybeli előnyöket kínálhat, amelyek hatékonyan ki tudják kapcsolni a processzort:

  • Csökkentik a memóriakezelési feladatokhoz, például kevesebb fordítási lookaside pufferhez (TLB) kapcsolódó többletterhelést.
  • Lerövidítik a memóriakezeléshez szükséges időt.

A PostgreSQL-ben a hatalmas oldalakat csak a megosztott memóriaterületen használhatja. A megosztott memóriaterület jelentős része megosztott pufferekhez van lefoglalva.

Egy másik előnye, hogy a hatalmas oldalak megakadályozzák a megosztott memóriaterület lemezre való felcserélését, ami tovább stabilizálja a teljesítményt.

Recommendations

  • A jelentős memóriaerőforrásokkal rendelkező kiszolgálók esetében kerülje a hatalmas lapok letiltását. A hatalmas lapok letiltása ronthatja a teljesítményt.
  • Ha egy kisebb kiszolgálóval kezd, amely nem támogatja a hatalmas oldalakat, de várhatóan felskáláz egy olyan kiszolgálóra, amely igen, tartsa a beállítást huge_pages a zökkenőmentes átmenet és az TRY optimális teljesítmény érdekében.

Azure-specifikus megjegyzések

A négy vagy több virtuális processzormaggal rendelkező kiszolgálók esetében a hatalmas lapok automatikusan lefoglalásra kerülnek az alapul szolgáló operációs rendszerből. A szolgáltatás nem érhető el négynél kevesebb virtuális maggal rendelkező kiszolgálók esetében. A hatalmas lapok száma automatikusan módosul, ha a megosztott memória beállításai módosulnak, beleértve a shared_buffersmódosításokat is.

karbantartási_munka_memória

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az olyan karbantartási műveletekhez használandó maximális memóriát, mint a VACUUM, az Index létrehozása.
Adattípus egész szám
Alapértelmezett érték A kiszolgáló számára lefoglalt erőforrásoktól (virtuális magoktól, RAM-októl vagy lemezterülettől) függ.
Engedélyezett értékek 1024-2097151
Paraméter típusa dynamic
Documentation maintenance_work_mem

Description

maintenance_work_mem egy konfigurációs paraméter a PostgreSQL-ben. Ez szabályozza a karbantartási műveletekhez lefoglalt memória mennyiségét, például VACUUM: , CREATE INDEXés ALTER TABLE. Ellentétben work_mema lekérdezési műveletek memóriafoglalásával, maintenance_work_mem az adatbázis struktúráját karbantartó és optimalizáló feladatokhoz van fenntartva.

! [MEGJEGYZÉS] A túlzottan agresszív értékek beállítása maintenance_work_mem időnként memóriahibahoz vezethet a rendszerben. A paraméter módosítása előtt rendkívül fontos tisztában lenni a kiszolgálón rendelkezésre álló memória mennyiségével és az egyidejű műveletek számával, amelyek memóriát foglalhatnak le a korábban ismertetett feladatokhoz.

Kulcsfontosságú pontok

  • Vákuummemória sapka: Ha növelni szeretné az elhalt tuple-ok eltávolításának sebességét, vegye figyelembe, hogy maintenance_work_mem az elhalt tuple-azonosítók gyűjtésére beépített korlátozás vonatkozik. Ehhez a folyamathoz legfeljebb 1 GB memóriát használhat.
  • A memória elkülönítése az autovacuumhoz: A beállítással autovacuum_work_mem szabályozhatja a memóriát, amelyet az autovacuum-műveletek egymástól függetlenül használnak. Ez a beállítás az maintenance_work_mem egy része. Eldöntheti, hogy az autovacuum mennyi memóriát használ anélkül, hogy befolyásolná az egyéb karbantartási feladatok és adatdefiníciós műveletek memóriafoglalását.

Azure-specifikus megjegyzések

A kiszolgálóparaméter alapértelmezett értékét a maintenance_work_mem rugalmas Azure Database for PostgreSQL-kiszolgáló példányának kiépítésekor számítja ki a rendszer a számításhoz kiválasztott terméknév alapján. A rugalmas kiszolgálót támogató számítás termékkijelölésének későbbi módosítása nem befolyásolja az adott példány kiszolgálóparaméterének alapértelmezett értékét maintenance_work_mem .

Minden alkalommal, amikor módosítja a példányhoz rendelt terméket, a maintenance_work_mem paraméter értékét is az alábbi képlet értékei alapján kell módosítania.

Az érték maintenance_work_mem kiszámításához használt képlet az .(long)(82.5 * ln(memoryGiB) + 40) * 1024

Az előző képlet alapján az alábbi táblázat felsorolja azokat az értékeket, amelyekre a kiszolgálóparaméter a kiosztott memória mennyiségétől függően be van állítva:

Memória mérete karbantartási_munka_memória
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GiB 332 800 KiB
48 GiB 367 616 KiB
64 GiB 392,192 KiB
80 GiB 410 624 KiB
128 GiB 450 560 KiB
160 GiB 468 992 KiB
192 GiB 484 352 KiB
256 GiB 508,928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_előkészített_tranzakciók

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja az egyidejűleg előkészített tranzakciók maximális számát. Replikakiszolgáló futtatásakor ezt a paramétert ugyanarra vagy magasabbra kell állítania, mint az elsődleges kiszolgálón.
Adattípus egész szám
Alapértelmezett érték 0
Engedélyezett értékek 0-262143
Paraméter típusa statikus
Documentation max_prepared_transactions

max_stack_depth

Attribute Érték
Kategória Erőforrás-használat / Memória
Description A maximális veremmélység beállítása kilobájtban.
Adattípus egész szám
Alapértelmezett érték 2048
Engedélyezett értékek 2048
Paraméter típusa csak olvasható
Documentation max_stack_depth

shared_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a kiszolgáló által használt megosztott memóriapufferek számát. Az egység 8kb. Az engedélyezett értékek a rendelkezésre álló memória 10%- 75%-ának tartományán belül vannak.
Adattípus egész szám
Alapértelmezett érték A kiszolgáló számára lefoglalt erőforrásoktól (virtuális magoktól, RAM-októl vagy lemezterülettől) függ.
Engedélyezett értékek 16-1073741823
Paraméter típusa statikus
Documentation shared_buffers

Description

A shared_buffers konfigurációs paraméter határozza meg a PostgreSQL-adatbázis számára az adatok puffereléséhez lefoglalt rendszermemória mennyiségét. Központi memóriakészletként szolgál, amely minden adatbázis-folyamat számára elérhető.

Amikor adatokra van szükség, az adatbázis-folyamat először ellenőrzi a megosztott puffert. Ha a szükséges adatok megtalálhatók, gyorsan lekérésre kerülnek, és elkerülik az időigényesebb lemezolvasást. A megosztott pufferek közvetítőként szolgálnak az adatbázis-folyamatok és a lemez között, és hatékonyan csökkentik a szükséges I/O-műveletek számát.

Azure-specifikus megjegyzések

A kiszolgálóparaméter alapértelmezett értékét a shared_buffers rugalmas Azure Database for PostgreSQL-kiszolgáló példányának kiépítésekor számítja ki a rendszer a számításhoz kiválasztott terméknév alapján. A rugalmas kiszolgálót támogató számítás termékkijelölésének későbbi változásai nem befolyásolják az adott példány kiszolgálóparaméterének alapértelmezett értékét shared_buffers .

Minden alkalommal, amikor módosítja a példányhoz rendelt terméket, a paraméter értékét shared_buffers is módosítania kell az alábbi képletek értékeinek megfelelően.

Legfeljebb 2 GiB memóriával rendelkező virtuális gépek esetén az érték shared_buffers kiszámításához használt képlet az memoryGib * 16384.

A 2 GiB-nél nagyobb virtuális gépek esetében az érték shared_buffers kiszámításához használt képlet az memoryGib * 32768.

Az előző képlet alapján az alábbi táblázat felsorolja azokat az értékeket, amelyekre a kiszolgálóparaméter a kiosztott memória mennyiségétől függően be van állítva:

Memória mérete shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GiB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GiB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

temp_buffers

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Az egyes adatbázis-munkamenetek által használt ideiglenes pufferek maximális számát adja meg.
Adattípus egész szám
Alapértelmezett érték 1024
Engedélyezett értékek 100-1073741823
Paraméter típusa dynamic
Documentation temp_buffers

work_mem

Attribute Érték
Kategória Erőforrás-használat / Memória
Description Beállítja a belső rendezési műveletek és kivonattáblák által használandó memória mennyiségét, mielőtt ideiglenes lemezfájlokba ír.
Adattípus egész szám
Alapértelmezett érték 4096
Engedélyezett értékek 4096-2097151
Paraméter típusa dynamic
Documentation work_mem

Description

A work_mem PostgreSQL paramétere szabályozza az egyes belső műveletekhez lefoglalt memória mennyiségét az egyes adatbázis-munkamenetek magánmemóriája területén. Ilyen műveletek például a rendezés és a kivonatolás.

A megosztott pufferek, amelyek a megosztott memóriaterületen vannak, ellentétben a work_mem egyenkénti munkamenet vagy lekérdezés privát memóriaterében van lefoglalva. A megfelelő work_mem méret beállításával jelentősen javíthatja ezeknek a műveleteknek a hatékonyságát, és csökkentheti az ideiglenes adatok lemezre írásának szükségességét.

Kulcsfontosságú pontok

  • Privát kapcsolati memória: work_mem az egyes adatbázis-munkamenetek által használt magánmemória része. Ez a memória különbözik a használt megosztott memóriaterülettől shared_buffers .
  • Lekérdezésspecifikus használat: Nem minden munkamenetet vagy lekérdezést használ work_mem. Egyszerű lekérdezések, mint például SELECT 1, valószínűleg nem igényelnek work_mem. Az összetett lekérdezések azonban, amelyek olyan műveleteket foglalnak magukban, mint a rendezés vagy a kivonatolás, egy vagy több work_mem adattömböt fogyaszthatnak.
  • Párhuzamos műveletek: Több párhuzamos háttérrendszerre kiterjedő lekérdezések esetén minden háttérrendszer egy vagy több adattömbet work_memhasználhat.

Monitorozás és work_mem módosítása

Elengedhetetlen a rendszer teljesítményének folyamatos monitorozása és szükség szerinti módosítása work_mem , elsősorban akkor, ha a rendezési vagy kivonatolási műveletekhez kapcsolódó lekérdezés-végrehajtási idő lassú. A teljesítmény monitorozásának módjai az Azure Portalon elérhető eszközökkel:

  • Lekérdezési teljesítményelemzés: Az ideiglenes fájlokat létrehozó lekérdezések azonosításához tekintse meg a leggyakoribb lekérdezéseket ideiglenes fájlok lapján. Ez a helyzet arra utal , hogy növelni kell a növekedést work_mem.
  • Hibaelhárítási útmutatók: A hibaelhárítási útmutatók Magas ideiglenes fájlok lapján azonosíthatja a problémás lekérdezéseket.
Granuláris beállítás

A paraméter kezelése work_mem során gyakran hatékonyabb egy részletes beállítási módszer alkalmazása a globális érték beállítása helyett. Ez a megközelítés biztosítja, hogy a memóriát körültekintően a folyamatok és a felhasználók konkrét igényei alapján foglalja le. Emellett minimálisra csökkenti a memóriahiányból adódó problémák kockázatát. Az alábbiak szerint végezheti el a következő lépéseket:

  • Felhasználói szint: Ha egy adott felhasználó elsősorban aggregációs vagy jelentéskészítési feladatokban vesz részt, amelyek memóriaigényesek, fontolja meg az adott felhasználó értékének work_mem testreszabását. ALTER ROLE A parancs használatával javíthatja a felhasználó műveleteinek teljesítményét.

  • Függvény-/eljárásszint: Ha bizonyos függvények vagy eljárások jelentős ideiglenes fájlokat hoznak létre, előnyös lehet az work_mem érték növelése az adott függvény vagy eljárás szintjén. Használja a ALTER FUNCTION vagy ALTER PROCEDURE parancsot, hogy pontosabban lefoglaljon több memóriát ezekhez a műveletekhez.

  • Adatbázisszint: Ha work_mem csak bizonyos adatbázisok hoznak létre nagy mennyiségű ideiglenes fájlt, módosítsa az adatbázis szintjén.

  • Globális szint: Ha a rendszer elemzése azt mutatja, hogy a lekérdezések többsége kis ideiglenes fájlokat hoz létre, míg csak kevesen hoznak létre nagy fájlokat, érdemes lehet globálisan növelni az work_mem értéket. Ez a művelet megkönnyíti a legtöbb lekérdezés feldolgozását a memóriában, így elkerülheti a lemezalapú műveleteket, és javíthatja a hatékonyságot. Azonban mindig legyen óvatos, és figyelje a kiszolgáló memóriakihasználtságát, hogy képes legyen kezelni a megnövekedett work_mem értéket.

A rendezési műveletek minimális work_mem értékének meghatározása

Ha meg szeretné keresni egy adott lekérdezés minimális work_mem értékét, különösen azt, amely ideiglenes lemezfájlokat hoz létre a rendezési folyamat során, először a lekérdezés végrehajtása során létrehozott ideiglenes fájlméretet kell figyelembe vennie. Ha például egy lekérdezés 20 MB-os ideiglenes fájlt hoz létre:

  1. Csatlakozzon az adatbázishoz a psql vagy az előnyben részesített PostgreSQL-ügyfél használatával.
  2. Állítson be egy 20 MB-nál valamivel nagyobb kezdeti work_mem értéket a további fejlécek számba vételéhez a memóriában történő feldolgozáskor. Használjon egy parancsot, például: SET work_mem TO '25MB'.
  3. Futtassa EXPLAIN ANALYZE a problémás lekérdezést ugyanabban a munkamenetben.
  4. Tekintse át a kimenetet "Sort Method: quicksort Memory: xkB". Ha jelzi "external merge Disk: xkB", növelje az work_mem értéket lépésenként, és tesztelje újra, amíg meg nem jelenik "quicksort Memory". A "quicksort Memory" megjelenése jelzi, hogy a lekérdezés most már a memóriában működik.
  5. Miután meghatározta az értéket ezzel a módszerrel, globálisan vagy részletesebb szinteken (a korábban leírtak szerint) alkalmazhatja a működési igényeinek megfelelően.