Sdílet prostřednictvím


Využití prostředků / paměť

autovacuum_work_mem

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální paměť, kterou bude používat každý pracovník procesu autovacuum.
Datový typ integer
Výchozí hodnota -1
Povolené hodnoty -1-2097151
Typ parametru dynamický
Dokumentace autovacuum_work_mem

commit_timestamp_buffers

Vlastnost Hodnota
Kategorie Využití prostředků / paměť
Popis Určuje množství paměti, které se má použít k ukládání obsahu pg_commit_ts do mezipaměti. Jednotka je 8 kB.
Datový typ integer
Výchozí hodnota 1024
Povolené hodnoty 1024
Typ parametru jen pro čtení
Dokumentace commit_timestamp_buffers

dynamický_typ_sdílené_paměti

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Vybere použitou implementaci dynamické sdílené paměti.
Datový typ výčet
Výchozí hodnota posix
Povolené hodnoty posix
Typ parametru jen pro čtení
Dokumentace typ dynamické sdílené paměti

násobitel paměti hash

Vlastnost Hodnota
Kategorie Využití prostředků / paměť
Popis Násobek hodnoty work_mem, který se má použít pro tabulky hash.
Datový typ číslicový
Výchozí hodnota 2
Povolené hodnoty 1-1000
Typ parametru dynamický
Dokumentace hash_mem_multiplier

huge_pages

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Povolí nebo zakáže použití velkých paměťových stránek. Toto nastavení se nevztahuje na servery, které mají méně než 4 virtuální jádra.
Datový typ výčet
Výchozí hodnota try
Povolené hodnoty on,off,try
Typ parametru statický
Dokumentace huge_pages

Popis

Obrovské stránky jsou funkce, která umožňuje správu paměti ve větších blocích. Bloky o velikosti až 2 MB můžete obvykle spravovat na rozdíl od standardních 4kB stránek.

Použití obrovských stránek může nabídnout výkonnostní výhody, které efektivně odlehčí procesoru:

  • Snižují režijní náklady spojené s úlohami správy paměti, jako je menší počet neúspěšných vyrovnávací paměti pro vyhledávání překladu (TLB).
  • Zkracují dobu potřebnou ke správě paměti.

Konkrétně v PostgreSQL můžete používat obrovské stránky pouze pro oblast sdílené paměti. Pro sdílené vyrovnávací paměti je přidělena významná část oblasti sdílené paměti.

Další výhodou je, že velké stránky brání přesunu oblasti sdílené paměti na disk, což dále stabilizuje výkon.

Doporučení

  • Pro servery s významnými paměťovými prostředky se vyhněte deaktivaci velkých stránek. Zakázání obrovských stránek by mohlo ohrozit výkon.
  • Pokud začnete s menším serverem, který nepodporuje velké stránky, ale očekáváte rozšíření na server, který je podporuje, udržujte huge_pages nastavení TRY pro bezproblémový přechod a optimální výkon.

Poznámky specifické pro Azure

Pro servery se čtyřmi nebo více vCores (virtuálními jádry) se velké stránky automaticky přidělují ze základního operačního systému. Tato funkce není dostupná pro servery s méně než čtyřmi virtuálními jádry. Pokud dojde ke změně nastavení sdílené paměti, včetně změn shared_buffers, počet obrovských stránek se automaticky upraví.

velikost obrovské stránky

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Velikost velké stránky, kterou byste měli požadovat.
Datový typ integer
Výchozí hodnota 0
Povolené hodnoty 0
Typ parametru jen pro čtení
Dokumentace huge_page_size

logical_decoding_work_mem

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální paměť, která se má použít pro logické dekódování.
Datový typ integer
Výchozí hodnota 65536
Povolené hodnoty 65536
Typ parametru jen pro čtení
Dokumentace logical_decoding_work_mem

Paměť_pro_údržbu

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální paměť, která se má použít pro operace údržby, jako je VACUUM nebo vytvoření indexu.
Datový typ integer
Výchozí hodnota Závisí na prostředcích (virtuálních jádrech, paměti RAM nebo místo na disku) přidělených serveru.
Povolené hodnoty 1024-2097151
Typ parametru dynamický
Dokumentace maintenance_work_mem

Popis

maintenance_work_mem je parametr konfigurace v PostgreSQL. Řídí množství paměti přidělené pro operace údržby, například VACUUM, CREATE INDEXa ALTER TABLE. Na rozdíl od work_memtoho, co ovlivňuje přidělení paměti pro operace dotazů, maintenance_work_mem je vyhrazeno pro úlohy, které udržují a optimalizují strukturu databáze.

! [POZNÁMKA] Nastavení příliš agresivních hodnot pro maintenance_work_mem může periodicky způsobovat chybu nedostatku paměti v systému. Před provedením změn tohoto parametru je velmi důležité pochopit množství paměti dostupné na serveru a počet souběžných operací, které by mohly přidělit paměť pro výše popsané úlohy.

Klíčové body

  • Limit paměti vakuového procesu: Chcete-li urychlit vyčištění mrtvých n-tic zvýšením maintenance_work_mem, mějte na paměti, že VACUUM má vestavěné omezení pro shromažďování identifikátorů mrtvých n-tic. Pro tento proces může používat pouze až 1 GB paměti.
  • Oddělení paměti pro autovacuum: Pomocí autovacuum_work_mem nastavení můžete řídit paměť, kterou operace autovacuum používají nezávisle. Toto nastavení funguje jako podmnožina maintenance_work_mem. Můžete se rozhodnout, kolik paměti autovacuum používá, aniž by to mělo vliv na přidělení paměti pro jiné úlohy údržby a operace definice dat.

Poznámky specifické pro Azure

Výchozí hodnota parametru maintenance_work_mem serveru se vypočítá při zřizování instance flexibilního serveru Azure Database for PostgreSQL na základě názvu produktu, který vyberete pro jeho výpočetní prostředky. Jakékoli následné změny výběru produktu na výpočetní prostředky, které podporují flexibilní server, nebudou mít žádný vliv na výchozí hodnotu parametru maintenance_work_mem serveru dané instance.

Pokaždé, když změníte produkt přiřazený k instanci, měli byste také upravit hodnotu maintenance_work_mem parametru podle hodnot v následujícím vzorci.

Vzorec použitý k výpočtu hodnoty maintenance_work_mem je (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Na základě předchozího vzorce by následující tabulka uvádí hodnoty, na které by byl tento parametr serveru nastavený v závislosti na velikosti zřízené paměti:

Velikost paměti paměť_pro_údržbu_práce
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GB 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 GB 508 928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

Maximum připravených transakcí

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální počet současně připravených transakcí. Při spuštění serveru repliky musíte tento parametr nastavit na stejnou nebo vyšší hodnotu než na primárním serveru.
Datový typ celočíslo
Výchozí hodnota 0
Povolené hodnoty 0-262143
Typ parametru statický
Dokumentace max_prepared_transactions

max_stack_depth

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální hloubku zásobníku v kilobajtech.
Datový typ integer
Výchozí hodnota 2048
Povolené hodnoty 2048
Typ parametru jen pro čtení
Dokumentace max_stack_depth

minimální dynamická sdílená paměť

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Množství dynamické sdílené paměti rezervované při spuštění
Datový typ integer
Výchozí hodnota 0
Povolené hodnoty 0
Typ parametru jen pro čtení
Dokumentace min_dynamic_shared_memory

multixact_member_buffers

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Určuje množství sdílené paměti, které se má použít k ukládání obsahu pg_multixact/members do mezipaměti. Jednotka je 8 kB.
Datový typ integer
Výchozí hodnota 32
Povolené hodnoty 32
Typ parametru jen pro čtení
Dokumentace multixact_member_buffers

multixact_offset_buffers

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Určuje množství sdílené paměti, které se má použít ke cachování obsahu pg_multixact/offsets. Jednotka je 8 kB.
Datový typ integer
Default value 16
Povolené hodnoty 16
Typ parametru jen pro čtení
Dokumentace multixact_offset_buffers

notify_buffers

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Určuje množství sdílené paměti, které se má použít k ukládání obsahu pg_notify do mezipaměti. Jednotka je 8 kB.
Datový typ integer
Default value 16
Povolené hodnoty 16
Typ parametru jen pro čtení
Dokumentace notify_buffers

serializovatelné buffery

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Určuje množství sdílené paměti, které se má použít k ukládání obsahu pg_serial do mezipaměti. Jednotka je 8 kB.
Datový typ integer
Výchozí hodnota 32
Povolené hodnoty 32
Typ parametru jen pro čtení
Dokumentace serializable_buffers

shared_buffers

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví počet vyrovnávacích pamětí pro sdílenou paměť, které používá server. Jednotka je 8 kB. Povolené hodnoty jsou v rozsahu 10 % – 75 % dostupné paměti.
Datový typ celočíselný
Výchozí hodnota Závisí na prostředcích (virtuálních jádrech, paměti RAM nebo místo na disku) přidělených serveru.
Povolené hodnoty 16-1073741823
Typ parametru statický
Dokumentace shared_buffers

Popis

Parametr shared_buffers konfigurace určuje množství systémové paměti přidělené databázi PostgreSQL pro ukládání dat do vyrovnávací paměti. Slouží jako centralizovaný fond paměti, který je přístupný pro všechny databázové procesy.

Když jsou zapotřebí data, proces databáze nejprve zkontroluje sdílenou vyrovnávací paměť. Pokud jsou požadovaná data přítomná, rychle se načtou a obejdou časově náročné čtení disku. Sdílené vyrovnávací paměti slouží jako zprostředkovatel mezi databázovými procesy a diskem a efektivně snižuje počet požadovaných vstupně-výstupních operací.

Poznámky specifické pro Azure

Výchozí hodnota parametru shared_buffers serveru se vypočítá při zřizování instance flexibilního serveru Azure Database for PostgreSQL na základě názvu produktu, který vyberete pro jeho výpočetní prostředky. Jakékoli následné změny výběru produktu na výpočetní prostředky, které podporují flexibilní server, nemají žádný vliv na výchozí hodnotu parametru shared_buffers serveru dané instance.

Pokaždé, když změníte produkt přiřazený k instanci, měli byste také upravit hodnotu parametru shared_buffers podle hodnot v následujících vzorcích.

Pro virtuální počítače s až 2 GiB paměti, vzorec použitý k výpočtu hodnoty shared_buffers je memoryGib * 16384.

Pro virtuální počítače s více než 2 GiB, vzorec použitý k výpočtu hodnoty shared_buffers je memoryGib * 32768.

Na základě předchozího vzorce by následující tabulka uvádí hodnoty, na které by byl tento parametr serveru nastavený v závislosti na velikosti zřízené paměti:

Velikost paměti shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

typ_sdílené_paměti

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Vybere implementaci sdílené paměti použitou pro hlavní oblast sdílené paměti.
Datový typ výčet
Výchozí hodnota mmap
Povolené hodnoty mmap
Typ parametru jen pro čtení
Dokumentace typ_sdílené_paměti

subtransaction_buffers

Vlastnost Hodnota
Kategorie Využití prostředků / paměť
Popis Určuje množství sdílené paměti, které se má použít k ukládání obsahu pg_subtrans do mezipaměti. Jednotka je 8 kB.
Datový typ integer
Výchozí hodnota 1024
Povolené hodnoty 1024
Typ parametru jen pro čtení
Dokumentace subtransaction_buffers

temp_buffers

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální počet dočasných vyrovnávacích pamětí, které používá každá databázová relace.
Datový typ integer
Výchozí hodnota 1024
Povolené hodnoty 100-1073741823
Typ parametru dynamický
Dokumentace temp_buffers

transaction_buffers

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Určuje množství sdílené paměti, které se má použít k ukládání obsahu pg_xact do mezipaměti. Jednotka je 8 kB.
Datový typ integer
Výchozí hodnota 1024
Povolené hodnoty 1024
Typ parametru jen pro čtení
Dokumentace transaction_buffers

limit_použití_mezipaměti_pro_vysávání

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví velikost fondu vyrovnávací paměti pro VACUUM, ANALYZE a autovacuum.
Datový typ integer
Výchozí hodnota 2048
Povolené hodnoty 0-16777216
Typ parametru dynamický
Dokumentace limit_použití_vakuového_bufferu

Pracovní paměť

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví velikost paměti, kterou budou používat interní operace řazení a tabulky hash před zápisem do dočasných souborů disku.
Datový typ integer
Výchozí hodnota 4096
Povolené hodnoty 4096-2097151
Typ parametru dynamický
Dokumentace work_mem

Popis

Parametr work_mem v PostgreSQL řídí množství paměti přidělené určitým interním operacím v oblasti privátní paměti každé relace databáze. Příklady těchto operací jsou řazení a hashování.

Na rozdíl od sdílených vyrovnávacích pamětí, které jsou v oblasti sdílené paměti, se work_mem přiděluje v soukromém paměťovém prostoru pro jednotlivé relace nebo dotazy. Nastavením odpovídající work_mem velikosti můžete výrazně zlepšit efektivitu těchto operací a snížit potřebu zápisu dočasných dat na disk.

Klíčové body

  • Paměť privátního připojení: work_mem je součástí privátní paměti, kterou každá relace databáze používá. Tato paměť se liší od oblasti sdílené paměti, kterou používá shared_buffers.
  • Použití specifické pro dotazy: Ne všechny relace nebo dotazy používají work_mem. Jednoduché dotazy jako SELECT 1 je nepravděpodobné, že by vyžadovaly work_mem. Složité dotazy, které zahrnují operace, jako je řazení nebo hashování, však mohou spotřebovávat jeden nebo více bloků work_memdat .
  • Paralelní operace: U dotazů, které pokrývají více paralelních back-endů work_mem, může každý back-end potenciálně použít jeden nebo více bloků dat .

Monitorování a úpravy work_mem

Je nezbytné nepřetržitě monitorovat výkon systému a podle potřeby upravovat work_mem , hlavně pokud jsou doby provádění dotazů související s operacemi řazení nebo hash pomalé. Tady jsou způsoby monitorování výkonu pomocí nástrojů dostupných na webu Azure Portal:

  • Přehled výkonu dotazů: Zkontrolujte nejčastější dotazy na kartě dočasných souborů a identifikujte dotazy, které generují dočasné soubory. Tato situace naznačuje, že je možné zvýšit work_mem.
  • Průvodci odstraňováním potíží: K identifikaci problematických dotazů použijte kartu Vysoké dočasné soubory v průvodcích odstraňováním potíží.
Jemné nastavení

Při správě parametru work_mem je často efektivnější přijmout podrobný přístup k úpravě, nikoli nastavit globální hodnotu. Tento přístup zajišťuje, že přidělíte paměť uvážlivě na základě konkrétních potřeb procesů a uživatelů. Minimalizuje také riziko vzniku problémů s nedostatkem paměti. Tady je návod, jak na to:

  • Úroveň uživatele: Pokud je konkrétní uživatel primárně zapojen do úloh agregace nebo generování sestav, které jsou náročné na paměť, zvažte přizpůsobení work_mem hodnoty pro daného uživatele. ALTER ROLE Pomocí příkazu můžete zvýšit výkon operací uživatele.

  • Úroveň funkce/procedury: Pokud konkrétní funkce nebo procedury generují podstatné dočasné soubory, může být zvýšení work_mem hodnoty na konkrétní úrovni funkce nebo procedury přínosné. ALTER FUNCTION Pomocí příkazu nebo ALTER PROCEDURE příkazu přidělte těmto operacím konkrétně více paměti.

  • Úroveň databáze: Změna work_mem na úrovni databáze, pokud pouze konkrétní databáze generují vysoký počet dočasných souborů.

  • Globální úroveň: Pokud analýza systému odhalí, že většina dotazů generuje malé dočasné soubory, zatímco jen několik vytváří velké soubory, může být obezřetné globálně zvýšit work_mem hodnotu. Tato akce usnadňuje zpracování většiny dotazů v paměti, takže se můžete vyhnout operacím založeným na disku a zlepšit efektivitu. Vždy ale buďte opatrní a monitorujte využití paměti na vašem serveru, abyste zajistili, že dokáže zpracovat zvýšenou work_mem hodnotu.

Určení minimální hodnoty work_mem pro operace řazení

Pokud chcete najít minimální work_mem hodnotu konkrétního dotazu, zejména pro dotaz, který během procesu řazení generuje dočasné diskové soubory, začněte zvážením dočasné velikosti souboru vygenerovaného během provádění dotazu. Pokud například dotaz generuje dočasný soubor o velikosti 20 MB:

  1. Připojte se k databázi pomocí psql nebo preferovaného klienta PostgreSQL.
  2. Při zpracování v paměti nastavte počáteční work_mem hodnotu o něco vyšší než 20 MB, aby se při zpracování v paměti zohlednily další hlavičky. Použijte příkaz, například: SET work_mem TO '25MB'.
  3. Spusťte problémový dotaz EXPLAIN ANALYZE ve stejné relaci.
  4. Zkontrolujte výstup pro "Sort Method: quicksort Memory: xkB". Pokud to znamená "external merge Disk: xkB", zvyšte work_mem hodnotu přírůstkově a znovu otestujte, dokud "quicksort Memory" se nezobrazí. Objevení se "quicksort Memory" znamená, že dotaz nyní pracuje v paměti.
  5. Jakmile určíte hodnotu prostřednictvím této metody, můžete ji použít globálně nebo na podrobnějších úrovních (jak je popsáno výše) tak, aby vyhovovala vašim provozním potřebám.

autovacuum_work_mem

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální paměť, kterou bude používat každý proces automatického vysávání.
Datový typ integer
Výchozí hodnota -1
Povolené hodnoty -1-2097151
Typ parametru dynamický
Dokumentace autovacuum_work_mem

typ dynamické sdílené paměti

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Vybere použitou implementaci dynamické sdílené paměti.
Datový typ výčet
Výchozí hodnota posix
Povolené hodnoty posix
Typ parametru jen pro čtení
Dokumentace dynamický_sdílený_typ_paměti

hash_mem_multiplier

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Násobek work_mem, které se mají použít pro tabulky hash.
Datový typ numerické
Výchozí hodnota 2
Povolené hodnoty 1-1000
Typ parametru dynamický
Dokumentace hash_mem_multiplier

velké stránky

Vlastnost Hodnota
Kategorie Využití prostředků / paměť
Popis Povolí nebo zakáže použití velkých paměťových stránek. Toto nastavení se nevztahuje na servery, které mají méně než 4 virtuální jádra.
Datový typ výčet
Výchozí hodnota try
Povolené hodnoty on,off,try
Typ parametru statický
Dokumentace Velké stránky

Popis

Obrovské stránky jsou funkce, která umožňuje správu paměti ve větších blocích. Bloky o velikosti až 2 MB můžete obvykle spravovat na rozdíl od standardních 4kB stránek.

Použití obrovských stránek může nabídnout výhody pro výkon, které efektivně uvolní procesor:

  • Snižují režijní náklady spojené s úlohami správy paměti, jako je menší počet neúspěšných vyrovnávací paměti pro vyhledávání překladu (TLB).
  • Zkracují dobu potřebnou ke správě paměti.

Konkrétně v PostgreSQL můžete používat obrovské stránky pouze pro oblast sdílené paměti. Významná část oblasti sdílené paměti je přidělena pro sdílené vyrovnávací paměti.

Další výhodou je, že velké stránky brání odkládání oblasti sdílené paměti na disk, což dále stabilizuje výkon.

Doporučení

  • Pro servery, které mají významné paměťové prostředky, se vyhněte zakázání obrovských stránek. Zakázání obrovských stránek by mohlo ohrozit výkon.
  • Pokud začnete s menším serverem, který nepodporuje velké stránky, ale plánujete přejít na server, který je podporuje, nechte nastavení huge_pages na TRY pro zajištění bezproblémového přechodu a optimálního výkonu.

Poznámky specifické pro Azure

Pro servery se čtyřmi nebo více virtuálními jádry se velké stránky automaticky přidělují ze základního operačního systému. Tato funkce není dostupná pro servery s méně než čtyřmi virtuálními jádry. Počet velkých stránek se automaticky upraví, pokud se změní nastavení sdílené paměti, včetně změn shared_buffers.

velká velikost stránky

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Velikost velké stránky, kterou byste měli požadovat.
Datový typ integer
Výchozí hodnota 0
Povolené hodnoty 0
Typ parametru jen pro čtení
Dokumentace huge_page_size

logical_decoding_work_mem

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální paměť, která se má použít pro logické dekódování.
Datový typ celočíselný
Výchozí hodnota 65536
Povolené hodnoty 64-2147483647
Typ parametru dynamický
Dokumentace logical_decoding_work_mem

maintenance_work_mem (paměť pro údržbu)

Vlastnost Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální paměť, která se má použít pro údržbové operace, jako je VACUUM a Create Index.
Datový typ integer
Výchozí hodnota Závisí na prostředcích (virtuálních jádrech, paměti RAM nebo místo na disku) přidělených serveru.
Povolené hodnoty 1024-2097151
Typ parametru dynamický
Dokumentace maintenance_work_mem

Popis

maintenance_work_mem je parametr konfigurace v PostgreSQL. Řídí množství paměti přidělené pro operace údržby, například VACUUM, CREATE INDEXa ALTER TABLE. Na rozdíl od work_memtoho, co ovlivňuje přidělení paměti pro operace dotazů, maintenance_work_mem je vyhrazeno pro úlohy, které udržují a optimalizují strukturu databáze.

![POZNÁMKA] Nastavení maintenance_work_mem na příliš agresivní hodnoty může pravidelně v systému způsobovat chybu nedostatku paměti. Před provedením změn tohoto parametru je velmi důležité pochopit množství paměti dostupné na serveru a počet souběžných operací, které by mohly přidělit paměť pro výše popsané úlohy.

Klíčové body

  • Kapacita paměti v režimu vakuování: Chcete-li urychlit vyčištění mrtvých dvojic zvýšením maintenance_work_mem, mějte na paměti, že VACUUM má integrované omezení pro shromažďování identifikátorů mrtvých dvojic. Pro tento proces může používat pouze až 1 GB paměti.
  • Oddělení paměti pro autovacuum: Nastavení můžete použít autovacuum_work_mem k řízení paměti, kterou operace automatického úklidu používají nezávisle. Toto nastavení funguje jako podmnožina maintenance_work_mem. Můžete se rozhodnout, kolik paměti autovacuum používá, aniž by to mělo vliv na přidělení paměti pro jiné úlohy údržby a operace definice dat.

Poznámky specifické pro Azure

Výchozí hodnota parametru maintenance_work_mem serveru se vypočítá při zřizování instance flexibilního serveru Azure Database for PostgreSQL na základě názvu produktu, který vyberete pro jeho výpočetní prostředky. Jakékoli následné změny výběru produktu na výpočetní prostředky, které podporují flexibilní server, nebudou mít žádný vliv na výchozí hodnotu parametru maintenance_work_mem serveru dané instance.

Pokaždé, když změníte produkt přiřazený k instanci, měli byste také upravit hodnotu maintenance_work_mem parametru podle hodnot v následujícím vzorci.

Vzorec použitý k výpočtu hodnoty maintenance_work_mem je (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Na základě předchozího vzorce by následující tabulka uvádí hodnoty, na které by byl tento parametr serveru nastavený v závislosti na velikosti zřízené paměti:

Velikost paměti maintenance_work_mem
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GB 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 GB 508 928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_připravené_transakce

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální počet současně připravených transakcí. Při spuštění serveru repliky musíte tento parametr nastavit na stejnou nebo vyšší hodnotu než na primárním serveru.
Datový typ celočíslo
Výchozí hodnota 0
Povolené hodnoty 0-262143
Typ parametru statický
Dokumentace max_připravených_transakcí

max_stack_depth

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální hloubku zásobníku v kilobajtech.
Datový typ integer
Výchozí hodnota 2048
Povolené hodnoty 2048
Typ parametru jen pro čtení
Dokumentace max_stack_depth

min_dynamic_shared_memory

Vlastnost Hodnota
Kategorie Využití prostředků / paměť
Popis Množství dynamické sdílené paměti rezervované při spuštění
Datový typ integer
Výchozí hodnota 0
Povolené hodnoty 0
Typ parametru jen pro čtení
Dokumentace min_dynamic_shared_memory

shared_buffers

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví počet vyrovnávacích pamětí ve sdílené paměti používané serverem. Jednotka je 8 kB. Povolené hodnoty jsou v rozsahu 10 % – 75 % dostupné paměti.
Datový typ celočíslo
Výchozí hodnota Závisí na prostředcích (virtuálních jádrech, paměti RAM nebo místo na disku) přidělených serveru.
Povolené hodnoty 16-1073741823
Typ parametru statický
Dokumentace shared_buffers

Popis

Parametr shared_buffers konfigurace určuje množství systémové paměti přidělené databázi PostgreSQL pro ukládání dat do vyrovnávací paměti. Slouží jako centralizovaný fond paměti, který je přístupný pro všechny databázové procesy.

Když jsou data potřeba, proces databáze nejprve zkontroluje sdílenou vyrovnávací paměť. Pokud jsou požadovaná data přítomna, rychle se načtou a vyhnou se časově náročnějšímu čtení z disku. Sdílené vyrovnávací paměti slouží jako zprostředkovatel mezi databázovými procesy a diskem a efektivně snižuje počet požadovaných vstupně-výstupních operací.

Poznámky specifické pro Azure

Výchozí hodnota parametru shared_buffers serveru se vypočítá při zřizování instance flexibilního serveru Azure Database for PostgreSQL na základě názvu produktu, který vyberete pro jeho výpočetní prostředky. Jakékoli následné změny výběru produktu na výpočetní prostředky, které podporují flexibilní server, nemají žádný vliv na výchozí hodnotu parametru shared_buffers serveru dané instance.

Pokaždé, když změníte produkt přiřazený k instanci, měli byste také upravit hodnotu parametru shared_buffers podle hodnot v následujících vzorcích.

Pro virtuální počítače s až 2 GiB paměti, vzorec použitý k výpočtu hodnoty shared_buffers je memoryGib * 16384.

Pro virtuální počítače s více než 2 GiB, vzorec použitý k výpočtu hodnoty shared_buffers je memoryGib * 32768.

Na základě předchozího vzorce by následující tabulka uvádí hodnoty, na které by byl tento parametr serveru nastavený v závislosti na velikosti zřízené paměti:

Velikost paměti shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

typ sdílené paměti

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Vybere implementaci sdílené paměti použitou pro hlavní oblast sdílené paměti.
Datový typ výčet
Výchozí hodnota mmap
Povolené hodnoty mmap
Typ parametru jen pro čtení
Dokumentace typ_sdílené_paměti

temp_buffers

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální počet dočasných vyrovnávacích pamětí používaných každou relací databáze.
Datový typ integer
Výchozí hodnota 1024
Povolené hodnoty 100-1073741823
Typ parametru dynamic
Dokumentace temp_buffers

limit_využití_vyrovnávací_paměti_vakuového_čištění

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastavit velikost fondu vyrovnávací paměti pro VACUUM, ANALYZE a autovacuum.
Datový typ integer
Výchozí hodnota 256
Povolené hodnoty 0-16777216
Typ parametru dynamický
Dokumentace omezení využití vyrovnávací paměti při vakuu

work_mem

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví velikost paměti, kterou budou používat interní operace řazení a tabulky hash před zápisem do dočasných souborů disku.
Datový typ integer
Default value 4096
Povolené hodnoty 4096-2097151
Typ parametru dynamický
Dokumentace work_mem

Popis

Parametr work_mem v PostgreSQL řídí množství paměti přidělené určitým interním operacím v oblasti privátní paměti každé relace databáze. Příklady těchto operací jsou řazení a hashování.

Na rozdíl od sdílených vyrovnávacích pamětí, které jsou v oblasti sdílené paměti, work_mem se přiděluje v privátním prostoru paměti pro jednotlivé relace nebo dotazy. Nastavením odpovídající work_mem velikosti můžete výrazně zlepšit efektivitu těchto operací a snížit potřebu zápisu dočasných dat na disk.

Klíčové body

  • Paměť privátního připojení: work_mem je součástí privátní paměti, kterou každá relace databáze používá. Tato paměť se liší od oblasti sdílené paměti, kterou shared_buffers používá.
  • Specifické použití pro dotazy: Ne všechny relace nebo dotazy používají work_mem. Jednoduché dotazy jako SELECT 1 je nepravděpodobné, že by vyžadovaly work_mem. Složité dotazy, které zahrnují operace, jako je řazení nebo hashování, však mohou spotřebovávat jeden nebo více bloků work_memdat .
  • Paralelní operace: U dotazů, které pokrývají více paralelních back-endů work_mem, může každý back-end potenciálně použít jeden nebo více bloků dat .

Monitorování a úpravy work_mem

Je nezbytné nepřetržitě monitorovat výkon systému a podle potřeby upravovat work_mem , hlavně pokud jsou doby provádění dotazů související s operacemi řazení nebo hash pomalé. Tady jsou způsoby monitorování výkonu pomocí nástrojů dostupných na webu Azure Portal:

  • Přehled výkonu dotazů: Zkontrolujte nejčastější dotazy na kartě dočasných souborů a identifikujte dotazy, které generují dočasné soubory. Tato situace naznačuje, že je možné zvýšit work_mem.
  • Průvodci odstraňováním potíží: K identifikaci problematických dotazů použijte kartu Vysoké dočasné soubory v průvodcích odstraňováním potíží.
Členitá úprava

Při správě parametru work_mem je často efektivnější přijmout podrobný přístup k úpravě, nikoli nastavit globální hodnotu. Tento přístup zajišťuje, že přidělíte paměť uvážlivě na základě konkrétních potřeb procesů a uživatelů. Minimalizuje také riziko vzniku problémů s nedostatkem paměti. Tady je, jak na to jít:

  • Úroveň uživatele: Pokud je konkrétní uživatel primárně zapojen do úloh agregace nebo generování sestav, které jsou náročné na paměť, zvažte přizpůsobení work_mem hodnoty pro daného uživatele. ALTER ROLE Pomocí příkazu můžete zvýšit výkon operací uživatele.

  • Úroveň funkce/procedury: Pokud konkrétní funkce nebo procedury generují podstatné dočasné soubory, může být zvýšení work_mem hodnoty na konkrétní úrovni funkce nebo procedury přínosné. ALTER FUNCTION Pomocí příkazu nebo ALTER PROCEDURE příkazu přidělte těmto operacím konkrétně více paměti.

  • Úroveň databáze: Změna work_mem na úrovni databáze, pokud pouze konkrétní databáze generují vysoký počet dočasných souborů.

  • Globální úroveň: Pokud analýza systému odhalí, že většina dotazů generuje malé dočasné soubory, zatímco jen několik vytváří velké soubory, může být obezřetné globálně zvýšit work_mem hodnotu. Tato akce usnadňuje zpracování většiny dotazů v paměti, takže se můžete vyhnout operacím založeným na disku a zlepšit efektivitu. Vždy ale buďte opatrní a monitorujte využití paměti na vašem serveru, abyste zajistili, že dokáže zpracovat zvýšenou work_mem hodnotu.

Určení minimální hodnoty work_mem pro operace řazení

Pokud chcete najít minimální work_mem hodnotu konkrétního dotazu, zejména pro dotaz, který během procesu řazení generuje dočasné diskové soubory, začněte zvážením dočasné velikosti souboru vygenerovaného během provádění dotazu. Pokud například dotaz generuje dočasný soubor o velikosti 20 MB:

  1. Připojte se k databázi pomocí psql nebo preferovaného klienta PostgreSQL.
  2. Při zpracování v paměti nastavte počáteční work_mem hodnotu o něco vyšší než 20 MB, aby se při zpracování v paměti zohlednily další hlavičky. Použijte příkaz, například: SET work_mem TO '25MB'.
  3. Spusťte ve stejné relaci dotaz s problémem EXPLAIN ANALYZE.
  4. Zkontrolujte výstup pro "Sort Method: quicksort Memory: xkB". Pokud to znamená "external merge Disk: xkB", zvyšte work_mem hodnotu přírůstkově a znovu otestujte, dokud "quicksort Memory" se nezobrazí. Zobrazení "quicksort Memory" signalizuje, že dotaz nyní běží v paměti.
  5. Jakmile určíte hodnotu prostřednictvím této metody, můžete ji použít globálně nebo na podrobnějších úrovních (jak je popsáno výše) tak, aby vyhovovala vašim provozním potřebám.

autovacuum_work_mem

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální paměť, kterou bude používat každý pracovní proces automatického úklidu.
Datový typ celočíselný
Výchozí hodnota -1
Povolené hodnoty -1-2097151
Typ parametru dynamický
Dokumentace autovacuum_work_mem

typ dynamické sdílené paměti

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Vybere použitou implementaci dynamické sdílené paměti.
Datový typ výčet
Výchozí hodnota posix
Povolené hodnoty posix
Typ parametru jen pro čtení
Dokumentace typ dynamické sdílené paměti

hash_mem_multiplier

Vlastnost Hodnota
Kategorie Využití prostředků / paměť
Popis Násobek work_mem, který se má použít pro tabulky hash.
Datový typ číselný
Výchozí hodnota 2
Povolené hodnoty 1-1000
Typ parametru dynamický
Dokumentace hash_mem_multiplier

velké stránky

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Umožňuje/zakazuje použití velkých paměťových stránek. Toto nastavení se nevztahuje na servery, které mají méně než 4 virtuální jádra.
Datový typ výčet
Výchozí hodnota try
Povolené hodnoty on,off,try
Typ parametru statický
Dokumentace velké stránky

Popis

Obrovské stránky jsou funkce, která umožňuje správu paměti ve větších blocích. Bloky o velikosti až 2 MB můžete obvykle spravovat na rozdíl od standardních 4kB stránek.

Použití obrovských stránek může nabídnout výhody výkonu, které efektivně odlehčí procesor:

  • Snižují režijní náklady spojené s úlohami správy paměti, například snížením počtu TLB chyb.
  • Zkracují dobu potřebnou ke správě paměti.

Konkrétně v PostgreSQL můžete používat obrovské stránky pouze pro oblast sdílené paměti. Významná část sdílené paměťové oblasti je přidělena pro sdílené vyrovnávací paměti.

Další výhodou je, že velké stránky zabraňují vyswapování oblasti sdílené paměti na disk, což dále stabilizuje výkon.

Doporučení

  • Pro servery, které mají významné paměťové prostředky, se vyhněte zakázání velkých stránek. Zakázání obrovských stránek by mohlo ohrozit výkon.
  • Pokud začnete s menším serverem, který nepodporuje obrovské stránky, ale očekáváte navýšení kapacity na server, který to umožňuje, udržujte huge_pages nastavení TRY pro zajištění bezproblémového přechodu a optimálního výkonu.

Poznámky specifické pro Azure

Pro servery se čtyřmi nebo více virtuálními jádry se obrovské stránky automaticky přidělují ze základního operačního systému. Tato funkce není dostupná pro servery s méně než čtyřmi virtuálními jádry. Počet velkých stránek se automaticky upraví, pokud dojde ke změně nastavení sdílené paměti, včetně změn shared_buffers.

velikost obří stránky

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Velikost velké stránky, kterou je třeba požadovat.
Datový typ integer
Výchozí hodnota 0
Povolené hodnoty 0
Typ parametru jen pro čtení
Dokumentace huge_page_size

paměť_pro_pracovní_logické_odkódování

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální paměť, která se má použít pro logické dekódování.
Datový typ integer
Výchozí hodnota 65536
Povolené hodnoty 64-2147483647
Typ parametru dynamický
Dokumentace logical_decoding_work_mem

maintenance_work_mem

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální paměť, která se má použít pro údržbové operace, jako je vakuum a vytvoření indexu.
Datový typ integer
Výchozí hodnota Závisí na prostředcích (virtuálních jádrech, paměti RAM nebo místo na disku) přidělených serveru.
Povolené hodnoty 1024-2097151
Typ parametru dynamický
Dokumentace maintenance_work_mem

Popis

maintenance_work_mem je parametr konfigurace v PostgreSQL. Řídí množství paměti přidělené pro operace údržby, například VACUUM, CREATE INDEXa ALTER TABLE. Na rozdíl od work_memtoho, co ovlivňuje přidělení paměti pro operace dotazů, maintenance_work_mem je vyhrazeno pro úlohy, které udržují a optimalizují strukturu databáze.

![POZNÁMKA] Nastavení příliš agresivních hodnot pro maintenance_work_mem může způsobovat opakované chyby nedostatku paměti v systému. Před provedením změn tohoto parametru je velmi důležité pochopit množství paměti dostupné na serveru a počet souběžných operací, které by mohly přidělit paměť pro výše popsané úlohy.

Klíčové body

  • Limit paměti pro vakuum: Pokud chcete urychlit vyčištění mrtvých n-tic zvýšením maintenance_work_mem, mějte na paměti, že VACUUM má integrované omezení pro shromažďování identifikátorů mrtvých n-tic. Pro tento proces může používat pouze až 1 GB paměti.
  • Oddělení paměti pro autovacuum: Můžete použít autovacuum_work_mem nastavení k nezávislému řízení paměti, kterou používá autovacuum. Toto nastavení funguje jako podmnožina maintenance_work_mem. Můžete se rozhodnout, kolik paměti autovacuum používá, aniž by to mělo vliv na přidělení paměti pro jiné úlohy údržby a operace definice dat.

Poznámky specifické pro Azure

Výchozí hodnota parametru maintenance_work_mem serveru se vypočítá při zřizování instance flexibilního serveru Azure Database for PostgreSQL na základě názvu produktu, který vyberete pro jeho výpočetní prostředky. Jakékoli následné změny výběru produktu na výpočetní prostředky, které podporují flexibilní server, nebudou mít žádný vliv na výchozí hodnotu parametru maintenance_work_mem serveru dané instance.

Pokaždé, když změníte produkt přiřazený k instanci, měli byste také upravit hodnotu maintenance_work_mem parametru podle hodnot v následujícím vzorci.

Vzorec použitý k výpočtu hodnoty maintenance_work_mem je (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Na základě předchozího vzorce by následující tabulka uvádí hodnoty, na které by byl tento parametr serveru nastavený v závislosti na velikosti zřízené paměti:

Velikost paměti maintenance_work_mem
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GB 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 GB 508 928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

Maximální počet připravených transakcí

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální počet současně připravených transakcí. Při spuštění serveru repliky musíte tento parametr nastavit na stejnou nebo vyšší hodnotu než na primárním serveru.
Datový typ integer
Výchozí hodnota 0
Povolené hodnoty 0-262143
Typ parametru statický
Dokumentace max_prepared_transactions

maximální_hloubka_zásobníku

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální hloubku zásobníku v kilobajtech.
Datový typ integer
Výchozí hodnota 2048
Povolené hodnoty 2048
Typ parametru jen pro čtení
Dokumentace max_stack_depth

Minimum dynamická sdílená paměť

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Množství dynamické sdílené paměti rezervované při spuštění
Datový typ integer
Výchozí hodnota 0
Povolené hodnoty 0
Typ parametru jen pro čtení
Dokumentace minimální_dynamická_sdílená_paměť

shared_buffers

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastavuje počet vyrovnávacích pamětí sdílené paměti, které používá server. Jednotka je 8 kB. Povolené hodnoty jsou v rozsahu 10 % – 75 % dostupné paměti.
Datový typ integer
Výchozí hodnota Závisí na prostředcích (virtuálních jádrech, paměti RAM nebo místo na disku) přidělených serveru.
Povolené hodnoty 16-1073741823
Typ parametru statický
Dokumentace shared_buffers

Popis

Parametr shared_buffers konfigurace určuje množství systémové paměti přidělené databázi PostgreSQL pro ukládání dat do vyrovnávací paměti. Slouží jako centralizovaný fond paměti, který je přístupný pro všechny databázové procesy.

V případě potřeby data proces databáze nejprve zkontroluje sdílenou vyrovnávací paměť. Pokud jsou požadovaná data dostupná, rychle se načtou a obejde se časově náročný diskový přístup. Sdílené vyrovnávací paměti slouží jako zprostředkovatel mezi databázovými procesy a diskem a efektivně snižuje počet požadovaných vstupně-výstupních operací.

Poznámky specifické pro Azure

Výchozí hodnota parametru shared_buffers serveru se vypočítá při zřizování instance flexibilního serveru Azure Database for PostgreSQL na základě názvu produktu, který vyberete pro jeho výpočetní prostředky. Jakékoli následné změny výběru produktu na výpočetní prostředky, které podporují flexibilní server, nemají žádný vliv na výchozí hodnotu parametru shared_buffers serveru dané instance.

Pokaždé, když změníte produkt přiřazený k instanci, měli byste také upravit hodnotu parametru shared_buffers podle hodnot v následujících vzorcích.

Pro virtuální počítače s až 2 GiB paměti, vzorec použitý k výpočtu hodnoty shared_buffers je memoryGib * 16384.

Pro virtuální počítače s více než 2 GiB, vzorec použitý k výpočtu hodnoty shared_buffers je memoryGib * 32768.

Na základě předchozího vzorce by následující tabulka uvádí hodnoty, na které by byl tento parametr serveru nastavený v závislosti na velikosti zřízené paměti:

Velikost paměti shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

typ sdílené paměti

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Vybere implementaci sdílené paměti použitou pro hlavní oblast sdílené paměti.
Datový typ výčet
Výchozí hodnota mmap
Povolené hodnoty mmap
Typ parametru jen pro čtení
Dokumentace typ_sdílené_paměti

temp_buffers

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální počet dočasných vyrovnávacích pamětí používaných každou relací databáze.
Datový typ integer
Výchozí hodnota 1024
Povolené hodnoty 100-1073741823
Typ parametru dynamický
Dokumentace temp_buffers

pracovní_paměť

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví velikost paměti, kterou budou používat interní operace řazení a tabulky hash před zápisem do dočasných souborů disku.
Datový typ integer
Výchozí hodnota 4096
Povolené hodnoty 4096-2097151
Typ parametru dynamický
Dokumentace work_mem

Popis

Parametr work_mem v PostgreSQL řídí množství paměti přidělené určitým interním operacím v oblasti privátní paměti každé relace databáze. Příklady těchto operací jsou řazení a hashování.

Na rozdíl od sdílených vyrovnávacích pamětí, které jsou v oblasti sdílené paměti, work_mem se přiděluje v privátním prostoru paměti pro jednotlivé relace nebo dotazy. Nastavením odpovídající work_mem velikosti můžete výrazně zlepšit efektivitu těchto operací a snížit potřebu zápisu dočasných dat na disk.

Klíčové body

  • Paměť privátního připojení: work_mem je součástí privátní paměti, kterou každá relace databáze používá. Tato paměť se liší od sdílené paměťové oblasti, kterou používá shared_buffers.
  • Použití specifické pro konkrétní dotazy: Ne všechny relace nebo dotazy používají work_mem. Jednoduché dotazy jako SELECT 1 je nepravděpodobné, že by vyžadovaly work_mem. Složité dotazy, které zahrnují operace, jako je řazení nebo hashování, však mohou spotřebovávat jeden nebo více bloků work_memdat .
  • Paralelní operace: U dotazů, které pokrývají více paralelních back-endů work_mem, může každý back-end potenciálně použít jeden nebo více bloků dat .

Monitorování a úpravy work_mem

Je nezbytné nepřetržitě monitorovat výkon systému a podle potřeby upravovat work_mem , hlavně pokud jsou doby provádění dotazů související s operacemi řazení nebo hash pomalé. Tady jsou způsoby monitorování výkonu pomocí nástrojů dostupných na webu Azure Portal:

  • Přehled výkonu dotazů: Zkontrolujte nejčastější dotazy na kartě dočasných souborů a identifikujte dotazy, které generují dočasné soubory. Tato situace naznačuje, že je možné zvýšit work_mem.
  • Průvodci odstraňováním potíží: K identifikaci problematických dotazů použijte kartu Vysoké dočasné soubory v průvodcích odstraňováním potíží.
Členitá úprava

Při správě parametru work_mem je často efektivnější přijmout podrobný přístup k úpravě, nikoli nastavit globální hodnotu. Tento přístup zajišťuje, že přidělíte paměť uvážlivě na základě konkrétních potřeb procesů a uživatelů. Minimalizuje také riziko vzniku problémů s nedostatkem paměti. Tady je postup, jak na to jít:

  • Úroveň uživatele: Pokud je konkrétní uživatel primárně zapojen do úloh agregace nebo generování sestav, které jsou náročné na paměť, zvažte přizpůsobení work_mem hodnoty pro daného uživatele. ALTER ROLE Pomocí příkazu můžete zvýšit výkon operací uživatele.

  • Úroveň funkce/procedury: Pokud konkrétní funkce nebo procedury generují podstatné dočasné soubory, může být zvýšení work_mem hodnoty na konkrétní úrovni funkce nebo procedury přínosné. ALTER FUNCTION Pomocí příkazu nebo ALTER PROCEDURE příkazu přidělte těmto operacím konkrétně více paměti.

  • Úroveň databáze: Změna work_mem na úrovni databáze, pokud pouze konkrétní databáze generují vysoký počet dočasných souborů.

  • Globální úroveň: Pokud analýza systému odhalí, že většina dotazů generuje malé dočasné soubory, zatímco jen několik vytváří velké soubory, může být obezřetné globálně zvýšit work_mem hodnotu. Tato akce usnadňuje zpracování většiny dotazů v paměti, takže se můžete vyhnout operacím založeným na disku a zlepšit efektivitu. Vždy ale buďte opatrní a monitorujte využití paměti na vašem serveru, abyste zajistili, že dokáže zpracovat zvýšenou work_mem hodnotu.

Určení minimální hodnoty work_mem pro operace řazení

Pokud chcete najít minimální work_mem hodnotu konkrétního dotazu, zejména pro dotaz, který během procesu řazení generuje dočasné diskové soubory, začněte zvážením dočasné velikosti souboru vygenerovaného během provádění dotazu. Pokud například dotaz generuje dočasný soubor o velikosti 20 MB:

  1. Připojte se k databázi pomocí psql nebo preferovaného klienta PostgreSQL.
  2. Při zpracování v paměti nastavte počáteční work_mem hodnotu o něco vyšší než 20 MB, aby se při zpracování v paměti zohlednily další hlavičky. Použijte příkaz, například: SET work_mem TO '25MB'.
  3. Spusťte EXPLAIN ANALYZE problémový dotaz ve stejné relaci.
  4. Zkontrolujte výstup pro "Sort Method: quicksort Memory: xkB". Pokud to znamená "external merge Disk: xkB", zvyšte work_mem hodnotu přírůstkově a znovu otestujte, dokud "quicksort Memory" se nezobrazí. Vzhled "quicksort Memory" signálů, které teď dotaz pracuje v paměti.
  5. Jakmile určíte hodnotu prostřednictvím této metody, můžete ji použít globálně nebo na podrobnějších úrovních (jak je popsáno výše) tak, aby vyhovovala vašim provozním potřebám.

autovacuum_work_mem

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální paměť, kterou bude používat každý pracovní proces automatického úklidu.
Datový typ integer
Default value -1
Povolené hodnoty -1-2097151
Typ parametru dynamický
Dokumentace autovacuum_work_mem

dynamic_shared_memory_type

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Vybere použitou implementaci dynamické sdílené paměti.
Datový typ výčet
Výchozí hodnota posix
Povolené hodnoty posix
Typ parametru jen pro čtení
Dokumentace dynamic_shared_memory_type

hash_mem_multiplier

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Násobek work_mem, který se má použít pro hashovací tabulky.
Datový typ číselný
Default value 1
Povolené hodnoty 1-1000
Typ parametru dynamický
Dokumentace hash_mem_multiplier

huge_pages

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Povolí nebo zakáže použití velkých paměťových stránek. Toto nastavení se nevztahuje na servery, které mají méně než 4 virtuální jádra.
Datový typ výčet
Výchozí hodnota try
Povolené hodnoty on,off,try
Typ parametru statický
Dokumentace velké stránky

Popis

Obrovské stránky jsou funkce, která umožňuje správu paměti ve větších blocích. Bloky o velikosti až 2 MB můžete obvykle spravovat na rozdíl od standardních 4kB stránek.

Použití obrovských stránek může nabídnout výkonnostní výhody, které efektivně odlehčí procesor.

  • Snižují režijní náklady spojené s úlohami správy paměti, jako je menší počet chyb při přístupu do překladového vyrovnávacího bufferu (TLB).
  • Zkracují dobu potřebnou ke správě paměti.

Konkrétně v PostgreSQL můžete používat obrovské stránky pouze pro oblast sdílené paměti. Významná část oblasti sdílené paměti je přidělena pro sdílené vyrovnávací paměti.

Další výhodou je, že velké stránky brání swapování sdílené paměťové oblasti na disk, čímž dále stabilizují výkon.

Doporučení

  • Pro servery s významnými paměťovými prostředky se vyhněte zakázání velkých stránek. Zakázání obrovských stránek by mohlo ohrozit výkon.
  • Pokud začnete s menším serverem, který nepodporuje obrovské stránky, ale očekáváte škálování na server, který to umožňuje, ponechte nastavení huge_pages na TRY pro zajištění bezproblémového přechodu a optimálního výkonu.

Poznámky specifické pro Azure

Pro servery se čtyřmi nebo více virtuálními jádry se obrovské stránky automaticky přidělují ze základního operačního systému. Tato funkce není dostupná pro servery s méně než čtyřmi virtuálními jádry. Počet obrovských stránek se automaticky upraví, pokud dojde k úpravě nastavení sdílené paměti, včetně změn shared_buffers.

velikost obrovské stránky

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Velikost velké stránky, která má být požadována.
Datový typ integer
Výchozí hodnota 0
Povolené hodnoty 0
Typ parametru jen pro čtení
Dokumentace huge_page_size

logical_decoding_work_mem

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální paměť, která se má použít pro logické dekódování.
Datový typ integer
Výchozí hodnota 65536
Povolené hodnoty 64-2147483647
Typ parametru dynamický
Dokumentace logické_odkódování_pracovní_paměti

maintenance_work_mem

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální paměť, která se má použít pro operace údržby, jako je vakuum, vytvoření indexu.
Datový typ integer
Výchozí hodnota Závisí na prostředcích (virtuálních jádrech, paměti RAM nebo místo na disku) přidělených serveru.
Povolené hodnoty 1024-2097151
Typ parametru dynamický
Dokumentace maintenance_work_mem

Popis

maintenance_work_mem je parametr konfigurace v PostgreSQL. Řídí množství paměti přidělené pro operace údržby, například VACUUM, CREATE INDEXa ALTER TABLE. Na rozdíl od work_memtoho, co ovlivňuje přidělení paměti pro operace dotazů, maintenance_work_mem je vyhrazeno pro úlohy, které udržují a optimalizují strukturu databáze.

![POZNÁMKA] Nastavení maintenance_work_mem příliš vysokých hodnot může způsobit chybu z nedostatku paměti v systému. Před provedením změn tohoto parametru je velmi důležité pochopit množství paměti dostupné na serveru a počet souběžných operací, které by mohly přidělit paměť pro výše popsané úlohy.

Klíčové body

  • Vakuový limit paměti: Chcete-li urychlit vyčištění mrtvých řádků zvýšením maintenance_work_mem, mějte na paměti, že VACUUM má integrované omezení pro shromažďování identifikátorů mrtvých řádků. Pro tento proces může používat pouze až 1 GB paměti.
  • Oddělení paměti pro autovacuum: Pomocí autovacuum_work_mem nastavení můžete řídit paměť, kterou operace autovacuum používají nezávisle. Toto nastavení funguje jako podmnožina maintenance_work_mem. Můžete se rozhodnout, kolik paměti autovacuum používá, aniž by to mělo vliv na přidělení paměti pro jiné úlohy údržby a operace definice dat.

Poznámky specifické pro Azure

Výchozí hodnota parametru maintenance_work_mem serveru se vypočítá při zřizování instance flexibilního serveru Azure Database for PostgreSQL na základě názvu produktu, který vyberete pro jeho výpočetní prostředky. Jakékoli následné změny výběru produktu na výpočetní prostředky, které podporují flexibilní server, nebudou mít žádný vliv na výchozí hodnotu parametru maintenance_work_mem serveru dané instance.

Pokaždé, když změníte produkt přiřazený k instanci, měli byste také upravit hodnotu maintenance_work_mem parametru podle hodnot v následujícím vzorci.

Vzorec použitý k výpočtu hodnoty maintenance_work_mem je (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Na základě předchozího vzorce by následující tabulka uvádí hodnoty, na které by byl tento parametr serveru nastavený v závislosti na velikosti zřízené paměti:

Velikost paměti paměť_pro_údržbu
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GB 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 GB 508 928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_připravených_transakcí

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální počet současně připravených transakcí. Při spuštění serveru repliky musíte tento parametr nastavit na stejnou nebo vyšší hodnotu než na primárním serveru.
Datový typ integer
Výchozí hodnota 0
Povolené hodnoty 0-262143
Typ parametru statický
Dokumentace max_prepared_transactions

maximální_hloubka_zásobníku

Vlastnost Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální hloubku zásobníku v kilobajtech.
Datový typ integer
Výchozí hodnota 2048
Povolené hodnoty 2048
Typ parametru jen pro čtení
Dokumentace max_stack_depth

min_dynamic_shared_memory

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Množství dynamické sdílené paměti rezervované při spuštění
Datový typ integer
Výchozí hodnota 0
Povolené hodnoty 0
Typ parametru jen pro čtení
Dokumentace minimální dynamická sdílená paměť

shared_buffers

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví počet vyrovnávacích pamětí pro sdílenou paměť používanou serverem. Jednotka je 8 kB. Povolené hodnoty jsou v rozsahu 10 % – 75 % dostupné paměti.
Datový typ integer
Výchozí hodnota Závisí na prostředcích (virtuálních jádrech, paměti RAM nebo místo na disku) přidělených serveru.
Povolené hodnoty 16-1073741823
Typ parametru statický
Dokumentace shared_buffers

Popis

Parametr shared_buffers konfigurace určuje množství systémové paměti přidělené databázi PostgreSQL pro ukládání dat do vyrovnávací paměti. Slouží jako centralizovaný fond paměti, který je přístupný pro všechny databázové procesy.

Když jsou data potřeba, proces databáze nejprve zkontroluje sdílenou vyrovnávací paměť. Pokud jsou požadovaná data přítomna, rychle se načtou a obejdou časově náročné čtení z disku. Sdílené vyrovnávací paměti slouží jako zprostředkovatel mezi databázovými procesy a diskem a efektivně snižuje počet požadovaných vstupně-výstupních operací.

Poznámky specifické pro Azure

Výchozí hodnota parametru shared_buffers serveru se vypočítá při zřizování instance flexibilního serveru Azure Database for PostgreSQL na základě názvu produktu, který vyberete pro jeho výpočetní prostředky. Jakékoli následné změny výběru produktu na výpočetní prostředky, které podporují flexibilní server, nemají žádný vliv na výchozí hodnotu parametru shared_buffers serveru dané instance.

Pokaždé, když změníte produkt přiřazený k instanci, měli byste také upravit hodnotu parametru shared_buffers podle hodnot v následujících vzorcích.

Pro virtuální počítače s až 2 GiB paměti, vzorec použitý k výpočtu hodnoty shared_buffers je memoryGib * 16384.

Pro virtuální počítače s více než 2 GiB, vzorec použitý k výpočtu hodnoty shared_buffers je memoryGib * 32768.

Na základě předchozího vzorce by následující tabulka uvádí hodnoty, na které by byl tento parametr serveru nastavený v závislosti na velikosti zřízené paměti:

Velikost paměti shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

typ sdílené paměti

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Vybere implementaci sdílené paměti použitou pro hlavní oblast sdílené paměti.
Datový typ výčet
Výchozí hodnota mmap
Povolené hodnoty mmap
Typ parametru jen pro čtení
Dokumentace typ_sdílené_paměti

temp_buffers

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální počet dočasných vyrovnávacích pamětí, které používá každá relace databáze.
Datový typ integer
Výchozí hodnota 1024
Povolené hodnoty 100-1073741823
Typ parametru dynamický
Dokumentace temp_buffers

pracovní paměť

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví velikost paměti, kterou budou používat interní operace řazení a tabulky hash před zápisem do dočasných souborů disku.
Datový typ integer
Výchozí hodnota 4096
Povolené hodnoty 4096-2097151
Typ parametru dynamický
Dokumentace work_mem

Popis

Parametr work_mem v PostgreSQL řídí množství paměti přidělené určitým interním operacím v oblasti privátní paměti každé relace databáze. Příklady těchto operací jsou řazení a hashování.

Na rozdíl od sdílených vyrovnávacích pamětí, které jsou v oblasti sdílené paměti, work_mem se přiděluje v privátním prostoru paměti pro jednotlivé relace nebo dotazy. Nastavením odpovídající work_mem velikosti můžete výrazně zlepšit efektivitu těchto operací a snížit potřebu zápisu dočasných dat na disk.

Klíčové body

  • Paměť privátního připojení: work_mem je součástí privátní paměti, kterou každá relace databáze používá. Tato paměť se liší od oblasti sdílené paměti, kterou shared_buffers používá.
  • Použití specifické pro dotazy: Ne všechny relace nebo dotazy používají work_mem. Jednoduché dotazy jako SELECT 1 je nepravděpodobné, že by vyžadovaly work_mem. Složité dotazy, které zahrnují operace, jako je řazení nebo hashování, však mohou spotřebovávat jeden nebo více bloků work_memdat .
  • Paralelní operace: U dotazů, které pokrývají více paralelních back-endů work_mem, může každý back-end potenciálně použít jeden nebo více bloků dat .

Monitorování a úpravy work_mem

Je nezbytné nepřetržitě monitorovat výkon systému a podle potřeby upravovat work_mem , hlavně pokud jsou doby provádění dotazů související s operacemi řazení nebo hash pomalé. Tady jsou způsoby monitorování výkonu pomocí nástrojů dostupných na webu Azure Portal:

  • Přehled výkonu dotazů: Zkontrolujte nejčastější dotazy na kartě dočasných souborů a identifikujte dotazy, které generují dočasné soubory. Tato situace naznačuje, že je možné zvýšit work_mem.
  • Průvodci odstraňováním potíží: K identifikaci problematických dotazů použijte kartu Vysoké dočasné soubory v průvodcích odstraňováním potíží.
Granulární úprava

Při správě parametru work_mem je často efektivnější přijmout podrobný přístup k úpravě, nikoli nastavit globální hodnotu. Tento přístup zajišťuje, že přidělíte paměť uvážlivě na základě konkrétních potřeb procesů a uživatelů. Minimalizuje také riziko vzniku problémů s nedostatkem paměti. Tady je, jak na to můžete jít:

  • Úroveň uživatele: Pokud je konkrétní uživatel primárně zapojen do úloh agregace nebo generování sestav, které jsou náročné na paměť, zvažte přizpůsobení work_mem hodnoty pro daného uživatele. ALTER ROLE Pomocí příkazu můžete zvýšit výkon operací uživatele.

  • Úroveň funkce/procedury: Pokud konkrétní funkce nebo procedury generují podstatné dočasné soubory, může být zvýšení work_mem hodnoty na konkrétní úrovni funkce nebo procedury přínosné. ALTER FUNCTION Pomocí příkazu nebo ALTER PROCEDURE příkazu přidělte těmto operacím konkrétně více paměti.

  • Úroveň databáze: Změna work_mem na úrovni databáze, pokud pouze konkrétní databáze generují vysoký počet dočasných souborů.

  • Globální úroveň: Pokud analýza systému odhalí, že většina dotazů generuje malé dočasné soubory, zatímco jen několik vytváří velké soubory, může být obezřetné globálně zvýšit work_mem hodnotu. Tato akce usnadňuje zpracování většiny dotazů v paměti, takže se můžete vyhnout operacím založeným na disku a zlepšit efektivitu. Vždy ale buďte opatrní a monitorujte využití paměti na vašem serveru, abyste zajistili, že dokáže zpracovat zvýšenou work_mem hodnotu.

Určení minimální hodnoty work_mem pro operace řazení

Pokud chcete najít minimální work_mem hodnotu konkrétního dotazu, zejména pro dotaz, který během procesu řazení generuje dočasné diskové soubory, začněte zvážením dočasné velikosti souboru vygenerovaného během provádění dotazu. Pokud například dotaz generuje dočasný soubor o velikosti 20 MB:

  1. Připojte se k databázi pomocí psql nebo preferovaného klienta PostgreSQL.
  2. Při zpracování v paměti nastavte počáteční work_mem hodnotu o něco vyšší než 20 MB, aby se při zpracování v paměti zohlednily další hlavičky. Použijte příkaz, například: SET work_mem TO '25MB'.
  3. Spusťte EXPLAIN ANALYZE problémový dotaz ve stejné relaci.
  4. Zkontrolujte výstup pro "Sort Method: quicksort Memory: xkB". Pokud to znamená "external merge Disk: xkB", zvyšte work_mem hodnotu přírůstkově a znovu otestujte, dokud "quicksort Memory" se nezobrazí. Zobrazení "quicksort Memory" signalizuje, že dotaz nyní běží v paměti.
  5. Jakmile určíte hodnotu prostřednictvím této metody, můžete ji použít globálně nebo na podrobnějších úrovních (jak je popsáno výše) tak, aby vyhovovala vašim provozním potřebám.

autovacuum_work_mem

Vlastnost Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální paměť, kterou bude používat každý pracovní proces automatického úklidu.
Datový typ integer
Výchozí hodnota -1
Povolené hodnoty -1-2097151
Typ parametru dynamický
Dokumentace autovacuum_work_mem

dynamic_shared_memory_type

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Vybere použitou implementaci dynamické sdílené paměti.
Datový typ výčet
Výchozí hodnota posix
Povolené hodnoty posix
Typ parametru jen pro čtení
Dokumentace dynamický_sdílený_paměťový_typ

hash_mem_multiplier

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Násobek work_mem, který se má použít pro tabulky hash.
Datový typ numerické
Výchozí hodnota 1
Povolené hodnoty 1-1000
Typ parametru dynamický
Dokumentace hash_mem_multiplier

velké stránky

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Povolí nebo zakáže použití velkých paměťových stránek. Toto nastavení se nevztahuje na servery, které mají méně než 4 virtuální jádra.
Datový typ výčet
Výchozí hodnota try
Povolené hodnoty on,off,try
Typ parametru statický
Dokumentace huge_pages

Popis

Obrovské stránky jsou funkce, která umožňuje správu paměti ve větších blocích. Bloky o velikosti až 2 MB můžete obvykle spravovat na rozdíl od standardních 4kB stránek.

Použití velkých stránek může nabídnout výhody výkonu, které efektivně odlehčí procesoru.

  • Snižují režijní náklady spojené s úlohami správy paměti, jako je menší počet neúspěšných vyrovnávací paměti pro vyhledávání překladu (TLB).
  • Zkracují dobu potřebnou ke správě paměti.

Konkrétně v PostgreSQL můžete používat obrovské stránky pouze pro oblast sdílené paměti. Významná část oblasti sdílené paměti je přidělena pro sdílené vyrovnávací paměti.

Další výhodou je, že velké stránky brání odkládání oblasti sdílené paměti na disk, což dále stabilizuje výkon.

Doporučení

  • U serverů s významnými paměťovými prostředky se vyhněte deaktivaci velkých stránek. Zakázání obrovských stránek by mohlo ohrozit výkon.
  • Pokud začnete s menším serverem, který nepodporuje obrovské stránky, ale očekáváte přechod na server, který je podporuje, udržujte huge_pages nastavení TRY pro zajištění bezproblémového přechodu a optimálního výkonu.

Poznámky specifické pro Azure

Pro servery se čtyřmi nebo více vCores se velké stránky automaticky alokují ze základního operačního systému. Tato funkce není dostupná pro servery s méně než čtyřmi virtuálními jádry. Počet obrovských stránek se automaticky upraví, pokud dojde ke změně nastavení sdílené paměti, a to včetně změn shared_buffers.

logical_decoding_work_mem

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální paměť, která se má použít pro logické dekódování.
Datový typ integer
Výchozí hodnota 65536
Povolené hodnoty 64-2147483647
Typ parametru dynamický
Dokumentace logical_decoding_work_mem

paměť_pro_údržbové_práce

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální paměť, která se má použít pro operace údržby, jako je vakuum, vytvořit index.
Datový typ integer
Výchozí hodnota Závisí na prostředcích (virtuálních jádrech, paměti RAM nebo místo na disku) přidělených serveru.
Povolené hodnoty 1024-2097151
Typ parametru dynamický
Dokumentace maintenance_work_mem

Popis

maintenance_work_mem je parametr konfigurace v PostgreSQL. Řídí množství paměti přidělené pro operace údržby, například VACUUM, CREATE INDEXa ALTER TABLE. Na rozdíl od work_memtoho, co ovlivňuje přidělení paměti pro operace dotazů, maintenance_work_mem je vyhrazeno pro úlohy, které udržují a optimalizují strukturu databáze.

![POZNÁMKA] Nastavení maintenance_work_mem na příliš agresivní hodnoty může opětovně způsobovat chybu nedostatku paměti v systému. Před provedením změn tohoto parametru je velmi důležité pochopit množství paměti dostupné na serveru a počet souběžných operací, které by mohly přidělit paměť pro výše popsané úlohy.

Klíčové body

  • Limit paměti pro vakuum: Chcete-li urychlit vyčištění mrtvých n-tic zvýšením maintenance_work_mem, mějte na paměti, že VACUUM má integrované omezení pro shromažďování identifikátorů mrtvých n-tic. Pro tento proces může používat pouze až 1 GB paměti.
  • Oddělení paměti pro autovacuum: Pomocí nastavení autovacuum_work_mem můžete nezávisle řídit, kolik paměti používají operace automatického úklidu. Toto nastavení funguje jako podmnožina maintenance_work_mem. Můžete se rozhodnout, kolik paměti autovacuum používá, aniž by to mělo vliv na přidělení paměti pro jiné úlohy údržby a operace definice dat.

Poznámky specifické pro Azure

Výchozí hodnota parametru maintenance_work_mem serveru se vypočítá při zřizování instance flexibilního serveru Azure Database for PostgreSQL na základě názvu produktu, který vyberete pro jeho výpočetní prostředky. Jakékoli následné změny výběru produktu na výpočetní prostředky, které podporují flexibilní server, nebudou mít žádný vliv na výchozí hodnotu parametru maintenance_work_mem serveru dané instance.

Pokaždé, když změníte produkt přiřazený k instanci, měli byste také upravit hodnotu maintenance_work_mem parametru podle hodnot v následujícím vzorci.

Vzorec použitý k výpočtu hodnoty maintenance_work_mem je (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Na základě předchozího vzorce by následující tabulka uvádí hodnoty, na které by byl tento parametr serveru nastavený v závislosti na velikosti zřízené paměti:

Velikost paměti paměť_pro_údržbu
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GB 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 GB 508 928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_připravených_transakcí

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální počet současně připravených transakcí. Při spuštění serveru repliky musíte tento parametr nastavit na stejnou nebo vyšší hodnotu než na primárním serveru.
Datový typ integer
Výchozí hodnota 0
Povolené hodnoty 0-262143
Typ parametru statický
Dokumentace max_připravených_transakcí

max_stack_depth

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální hloubku zásobníku v kilobajtech.
Datový typ integer
Výchozí hodnota 2048
Povolené hodnoty 2048
Typ parametru jen pro čtení
Dokumentace max_stack_depth

shared_buffers

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví počet vyrovnávacích pamětí sdílených pamětí, které server používá. Jednotka je 8 kB. Povolené hodnoty jsou v rozsahu 10 % – 75 % dostupné paměti.
Datový typ integer
Default value Závisí na prostředcích (virtuálních jádrech, paměti RAM nebo místo na disku) přidělených serveru.
Povolené hodnoty 16-1073741823
Typ parametru statický
Dokumentace shared_buffers

Popis

Parametr shared_buffers konfigurace určuje množství systémové paměti přidělené databázi PostgreSQL pro ukládání dat do vyrovnávací paměti. Slouží jako centralizovaný fond paměti, který je přístupný pro všechny databázové procesy.

Když jsou potřeba data, proces databáze nejprve zkontroluje sdílenou vyrovnávací paměť. Pokud jsou požadovaná data přítomna, rychle se načtou a obejdou časově náročné čtení z disku. Sdílené vyrovnávací paměti slouží jako zprostředkovatel mezi databázovými procesy a diskem a efektivně snižuje počet požadovaných vstupně-výstupních operací.

Poznámky specifické pro Azure

Výchozí hodnota parametru shared_buffers serveru se vypočítá při zřizování instance flexibilního serveru Azure Database for PostgreSQL na základě názvu produktu, který vyberete pro jeho výpočetní prostředky. Jakékoli následné změny výběru produktu na výpočetní prostředky, které podporují flexibilní server, nemají žádný vliv na výchozí hodnotu parametru shared_buffers serveru dané instance.

Pokaždé, když změníte produkt přiřazený k instanci, měli byste také upravit hodnotu parametru shared_buffers podle hodnot v následujících vzorcích.

Pro virtuální počítače s až 2 GiB paměti, vzorec použitý k výpočtu hodnoty shared_buffers je memoryGib * 16384.

Pro virtuální počítače s více než 2 GiB, vzorec použitý k výpočtu hodnoty shared_buffers je memoryGib * 32768.

Na základě předchozího vzorce by následující tabulka uvádí hodnoty, na které by byl tento parametr serveru nastavený v závislosti na velikosti zřízené paměti:

Velikost paměti shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

sdílený_typ_paměti

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Vybere implementaci sdílené paměti použitou pro hlavní oblast sdílené paměti.
Datový typ výčet
Výchozí hodnota mmap
Povolené hodnoty mmap
Typ parametru jen pro čtení
Dokumentace typ_sdílené_paměti

temp_buffers

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální počet dočasných vyrovnávacích pamětí, které využívá každá relace databáze.
Datový typ integer
Výchozí hodnota 1024
Povolené hodnoty 100-1073741823
Typ parametru dynamický
Dokumentace temp_buffers

work_mem

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví velikost paměti, kterou budou používat interní operace řazení a tabulky hash před zápisem do dočasných souborů disku.
Datový typ integer
Výchozí hodnota 4096
Povolené hodnoty 4096-2097151
Typ parametru dynamický
Dokumentace work_mem

Popis

Parametr work_mem v PostgreSQL řídí množství paměti přidělené určitým interním operacím v oblasti privátní paměti každé relace databáze. Příklady těchto operací jsou řazení a hashování.

Na rozdíl od sdílených vyrovnávacích pamětí, které jsou v oblasti sdílené paměti, work_mem se přiděluje v privátním prostoru paměti pro jednotlivé relace nebo dotazy. Nastavením odpovídající work_mem velikosti můžete výrazně zlepšit efektivitu těchto operací a snížit potřebu zápisu dočasných dat na disk.

Klíčové body

  • Paměť privátního připojení: work_mem je součástí privátní paměti, kterou každá relace databáze používá. Tato paměť se liší od oblasti sdílené paměti, kterou shared_buffers používá.
  • Použití specifické pro dotazy: Ne všechny relace nebo dotazy používají work_mem. Jednoduché dotazy jako SELECT 1 je nepravděpodobné, že by vyžadovaly work_mem. Složité dotazy, které zahrnují operace, jako je řazení nebo hashování, však mohou spotřebovávat jeden nebo více bloků work_memdat .
  • Paralelní operace: U dotazů, které pokrývají více paralelních back-endů work_mem, může každý back-end potenciálně použít jeden nebo více bloků dat .

Monitorování a úpravy work_mem

Je nezbytné nepřetržitě monitorovat výkon systému a podle potřeby upravovat work_mem , hlavně pokud jsou doby provádění dotazů související s operacemi řazení nebo hash pomalé. Tady jsou způsoby monitorování výkonu pomocí nástrojů dostupných na webu Azure Portal:

  • Přehled výkonu dotazů: Zkontrolujte nejčastější dotazy na kartě dočasných souborů a identifikujte dotazy, které generují dočasné soubory. Tato situace naznačuje, že je možné zvýšit work_mem.
  • Průvodci odstraňováním potíží: K identifikaci problematických dotazů použijte kartu Vysoké dočasné soubory v průvodcích odstraňováním potíží.
Granulární úprava

Při správě parametru work_mem je často efektivnější přijmout podrobný přístup k úpravě, nikoli nastavit globální hodnotu. Tento přístup zajišťuje, že přidělíte paměť uvážlivě na základě konkrétních potřeb procesů a uživatelů. Minimalizuje také riziko vzniku problémů s nedostatkem paměti. Tady je, jak na to:

  • Úroveň uživatele: Pokud je konkrétní uživatel primárně zapojen do úloh agregace nebo generování sestav, které jsou náročné na paměť, zvažte přizpůsobení work_mem hodnoty pro daného uživatele. ALTER ROLE Pomocí příkazu můžete zvýšit výkon operací uživatele.

  • Úroveň funkce/procedury: Pokud konkrétní funkce nebo procedury generují podstatné dočasné soubory, může být zvýšení work_mem hodnoty na konkrétní úrovni funkce nebo procedury přínosné. ALTER FUNCTION Pomocí příkazu nebo ALTER PROCEDURE příkazu přidělte těmto operacím konkrétně více paměti.

  • Úroveň databáze: Změna work_mem na úrovni databáze, pokud pouze konkrétní databáze generují vysoký počet dočasných souborů.

  • Globální úroveň: Pokud analýza systému odhalí, že většina dotazů generuje malé dočasné soubory, zatímco jen několik vytváří velké soubory, může být obezřetné globálně zvýšit work_mem hodnotu. Tato akce usnadňuje zpracování většiny dotazů v paměti, takže se můžete vyhnout operacím založeným na disku a zlepšit efektivitu. Vždy ale buďte opatrní a monitorujte využití paměti na vašem serveru, abyste zajistili, že dokáže zpracovat zvýšenou work_mem hodnotu.

Určení minimální hodnoty work_mem pro operace řazení

Pokud chcete najít minimální work_mem hodnotu konkrétního dotazu, zejména pro dotaz, který během procesu řazení generuje dočasné diskové soubory, začněte zvážením dočasné velikosti souboru vygenerovaného během provádění dotazu. Pokud například dotaz generuje dočasný soubor o velikosti 20 MB:

  1. Připojte se k databázi pomocí psql nebo preferovaného klienta PostgreSQL.
  2. Při zpracování v paměti nastavte počáteční work_mem hodnotu o něco vyšší než 20 MB, aby se při zpracování v paměti zohlednily další hlavičky. Použijte příkaz, například: SET work_mem TO '25MB'.
  3. Spusťte EXPLAIN ANALYZE na problémový dotaz ve stejné relaci.
  4. Zkontrolujte výstup pro "Sort Method: quicksort Memory: xkB". Pokud to znamená "external merge Disk: xkB", zvyšte work_mem hodnotu přírůstkově a znovu otestujte, dokud "quicksort Memory" se nezobrazí. Zobrazení "quicksort Memory" signalizuje, že dotaz nyní pracuje v paměti.
  5. Jakmile určíte hodnotu prostřednictvím této metody, můžete ji použít globálně nebo na podrobnějších úrovních (jak je popsáno výše) tak, aby vyhovovala vašim provozním potřebám.

autovacuum_work_mem

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální paměť, kterou bude používat každý pracovní proces automatického úklidu.
Datový typ integer
Výchozí hodnota -1
Povolené hodnoty -1-2097151
Typ parametru dynamický
Dokumentace autovacuum_work_mem

Typ dynamické sdílené paměti

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Vybere použitou implementaci dynamické sdílené paměti.
Datový typ výčet
Výchozí hodnota posix
Povolené hodnoty posix
Typ parametru jen pro čtení
Dokumentace dynamic_shared_memory_type

násobitel_paměti_hash

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Násobek work_mem, které se mají použít pro tabulky hash.
Datový typ numerické
Výchozí hodnota 1
Povolené hodnoty 1-1000
Typ parametru dynamický
Dokumentace hash_mem_multiplier

huge_pages

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Povolí nebo zakáže použití velkých paměťových stránek. Toto nastavení se nevztahuje na servery, které mají méně než 4 virtuální jádra.
Datový typ výčet
Výchozí hodnota try
Povolené hodnoty on,off,try
Typ parametru statický
Dokumentace velké stránky

Popis

Obrovské stránky jsou funkce, která umožňuje správu paměti ve větších blocích. Bloky o velikosti až 2 MB můžete obvykle spravovat na rozdíl od standardních 4kB stránek.

Použití obrovských stránek může nabídnout výhody výkonu, které efektivně ulehčí procesoru:

  • Snižují režijní náklady spojené s úlohami správy paměti, jako je snížení počtu chyb v mezipřechodu paměťového překladu (TLB).
  • Zkracují dobu potřebnou ke správě paměti.

Konkrétně v PostgreSQL můžete používat obrovské stránky pouze pro oblast sdílené paměti. Pro sdílené vyrovnávací paměti je přidělena významná část oblasti sdílené paměti.

Další výhodou je, že velké stránky brání odstranění oblasti sdílené paměti na disk, což dále stabilizuje výkon.

Doporučení

  • Pro servery, které mají významné paměťové prostředky, nezakazujte velké stránky. Zakázání obrovských stránek by mohlo ohrozit výkon.
  • Pokud začnete s menším serverem, který nepodporuje obrovské stránky, ale očekáváte přechod na větší server, který to podporuje, mějte nastavení huge_pages na TRY pro zajištění bezproblémového přechodu a optimálního výkonu.

Poznámky specifické pro Azure

Pro servery se čtyřmi nebo více virtuálními jádry se velké stránky automaticky přidělují ze základního operačního systému. Tato funkce není dostupná pro servery s méně než čtyřmi virtuálními jádry. Počet obrovských stránek se automaticky upraví, pokud dojde ke změně nastavení sdílené paměti, včetně úprav souvisejících s shared_buffers.

maintenance_work_mem

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální paměť, která se má použít pro operace údržby, jako je VACUUM a vytváření indexu.
Datový typ celočíslo
Výchozí hodnota Závisí na prostředcích (virtuálních jádrech, paměti RAM nebo místo na disku) přidělených serveru.
Povolené hodnoty 1024-2097151
Typ parametru dynamický
Dokumentace maintenance_work_mem

Popis

maintenance_work_mem je parametr konfigurace v PostgreSQL. Řídí množství paměti přidělené pro operace údržby, například VACUUM, CREATE INDEXa ALTER TABLE. Na rozdíl od work_memtoho, co ovlivňuje přidělení paměti pro operace dotazů, maintenance_work_mem je vyhrazeno pro úlohy, které udržují a optimalizují strukturu databáze.

![POZNÁMKA] Nastavení maintenance_work_mem na příliš agresivní hodnoty může v systému občas způsobit chybu nedostatku paměti. Před provedením změn tohoto parametru je velmi důležité pochopit množství paměti dostupné na serveru a počet souběžných operací, které by mohly přidělit paměť pro výše popsané úlohy.

Klíčové body

  • Vakuový limit paměti: Chcete-li urychlit vyčištění mrtvých záznamů zvýšením maintenance_work_mem, mějte na paměti, že VACUUM má integrované omezení pro shromažďování identifikátorů mrtvých záznamů. Pro tento proces může používat pouze až 1 GB paměti.
  • Oddělení paměti pro autovacuum: Můžete použít nastavení autovacuum_work_mem k řízení paměti, kterou operace autovakuování používají nezávisle. Toto nastavení funguje jako podmnožina maintenance_work_mem. Můžete se rozhodnout, kolik paměti autovacuum používá, aniž by to mělo vliv na přidělení paměti pro jiné úlohy údržby a operace definice dat.

Poznámky specifické pro Azure

Výchozí hodnota parametru maintenance_work_mem serveru se vypočítá při zřizování instance flexibilního serveru Azure Database for PostgreSQL na základě názvu produktu, který vyberete pro jeho výpočetní prostředky. Jakékoli následné změny výběru produktu na výpočetní prostředky, které podporují flexibilní server, nebudou mít žádný vliv na výchozí hodnotu parametru maintenance_work_mem serveru dané instance.

Pokaždé, když změníte produkt přiřazený k instanci, měli byste také upravit hodnotu maintenance_work_mem parametru podle hodnot v následujícím vzorci.

Vzorec použitý k výpočtu hodnoty maintenance_work_mem je (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Na základě předchozího vzorce by následující tabulka uvádí hodnoty, na které by byl tento parametr serveru nastavený v závislosti na velikosti zřízené paměti:

Velikost paměti paměť pro údržbu
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GB 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 GB 508 928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_připravené_transakce

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální počet současně připravených transakcí. Při spuštění serveru repliky musíte tento parametr nastavit na stejnou nebo vyšší hodnotu než na primárním serveru.
Datový typ integer
Výchozí hodnota 0
Povolené hodnoty 0-262143
Typ parametru statický
Dokumentace max_prepared_transactions

max_stack_depth

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální hloubku zásobníku v kilobajtech.
Datový typ integer
Výchozí hodnota 2048
Povolené hodnoty 2048
Typ parametru jen pro čtení
Dokumentace max_stack_depth

shared_buffers

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví počet bufferů sdílené paměti používaných serverem. Jednotka je 8 kB. Povolené hodnoty jsou v rozsahu 10 % – 75 % dostupné paměti.
Datový typ integer
Výchozí hodnota Závisí na prostředcích (virtuálních jádrech, paměti RAM nebo místo na disku) přidělených serveru.
Povolené hodnoty 16-1073741823
Typ parametru statický
Dokumentace shared_buffers

Popis

Parametr shared_buffers konfigurace určuje množství systémové paměti přidělené databázi PostgreSQL pro ukládání dat do vyrovnávací paměti. Slouží jako centralizovaný fond paměti, který je přístupný pro všechny databázové procesy.

Když jsou data potřeba, databázový proces nejprve zkontroluje tu sdílenou vyrovnávací paměť. Pokud jsou požadovaná data přítomná, se rychle načtou a vyhnou se časově náročnému čtení disku. Sdílené vyrovnávací paměti slouží jako zprostředkovatel mezi databázovými procesy a diskem a efektivně snižuje počet požadovaných vstupně-výstupních operací.

Poznámky specifické pro Azure

Výchozí hodnota parametru shared_buffers serveru se vypočítá při zřizování instance flexibilního serveru Azure Database for PostgreSQL na základě názvu produktu, který vyberete pro jeho výpočetní prostředky. Jakékoli následné změny výběru produktu na výpočetní prostředky, které podporují flexibilní server, nemají žádný vliv na výchozí hodnotu parametru shared_buffers serveru dané instance.

Pokaždé, když změníte produkt přiřazený k instanci, měli byste také upravit hodnotu parametru shared_buffers podle hodnot v následujících vzorcích.

Pro virtuální počítače s až 2 GiB paměti, vzorec použitý k výpočtu hodnoty shared_buffers je memoryGib * 16384.

Pro virtuální počítače s více než 2 GiB, vzorec použitý k výpočtu hodnoty shared_buffers je memoryGib * 32768.

Na základě předchozího vzorce by následující tabulka uvádí hodnoty, na které by byl tento parametr serveru nastavený v závislosti na velikosti zřízené paměti:

Velikost paměti shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

typ_sdílené_paměti

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Vybere implementaci sdílené paměti použitou pro hlavní oblast sdílené paměti.
Datový typ výčet
Výchozí hodnota mmap
Povolené hodnoty mmap
Typ parametru jen pro čtení
Dokumentace typ_sdílené_paměti

temp_buffers

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální počet dočasných vyrovnávacích pamětí, které používá každá databázová relace.
Datový typ integer
Výchozí hodnota 1024
Povolené hodnoty 100-1073741823
Typ parametru dynamický
Dokumentace temp_buffers

pracovní_paměť

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví velikost paměti, kterou budou používat interní operace řazení a tabulky hash před zápisem do dočasných souborů disku.
Datový typ integer
Výchozí hodnota 4096
Povolené hodnoty 4096-2097151
Typ parametru dynamický
Dokumentace work_mem

Popis

Parametr work_mem v PostgreSQL řídí množství paměti přidělené určitým interním operacím v oblasti privátní paměti každé relace databáze. Příklady těchto operací jsou řazení a hashování.

Na rozdíl od sdílených vyrovnávacích pamětí, které jsou v oblasti sdílené paměti, work_mem se přiděluje v privátním prostoru paměti pro jednotlivé relace nebo dotazy. Nastavením odpovídající work_mem velikosti můžete výrazně zlepšit efektivitu těchto operací a snížit potřebu zápisu dočasných dat na disk.

Klíčové body

  • Paměť privátního připojení: work_mem je součástí privátní paměti, kterou každá relace databáze používá. Tato paměť se liší od oblasti sdílené paměti, kterou používá shared_buffers.
  • Použití specifické pro dotazy: Ne všechny relace nebo dotazy používají work_mem. Jednoduché dotazy jako SELECT 1 je nepravděpodobné, že by vyžadovaly work_mem. Složité dotazy, které zahrnují operace, jako je řazení nebo hashování, však mohou spotřebovávat jeden nebo více bloků work_memdat .
  • Paralelní operace: U dotazů, které pokrývají více paralelních back-endů work_mem, může každý back-end potenciálně použít jeden nebo více bloků dat .

Monitorování a úpravy work_mem

Je nezbytné nepřetržitě monitorovat výkon systému a podle potřeby upravovat work_mem , hlavně pokud jsou doby provádění dotazů související s operacemi řazení nebo hash pomalé. Tady jsou způsoby monitorování výkonu pomocí nástrojů dostupných na webu Azure Portal:

  • Přehled výkonu dotazů: Zkontrolujte nejčastější dotazy na kartě dočasných souborů a identifikujte dotazy, které generují dočasné soubory. Tato situace naznačuje, že je možné zvýšit work_mem.
  • Průvodci odstraňováním potíží: K identifikaci problematických dotazů použijte kartu Vysoké dočasné soubory v průvodcích odstraňováním potíží.
Granulární úprava

Při správě parametru work_mem je často efektivnější přijmout podrobný přístup k úpravě, nikoli nastavit globální hodnotu. Tento přístup zajišťuje, že přidělíte paměť uvážlivě na základě konkrétních potřeb procesů a uživatelů. Minimalizuje také riziko vzniku problémů s nedostatkem paměti. Zde je, jak na to můžete jít:

  • Úroveň uživatele: Pokud je konkrétní uživatel primárně zapojen do úloh agregace nebo generování sestav, které jsou náročné na paměť, zvažte přizpůsobení work_mem hodnoty pro daného uživatele. ALTER ROLE Pomocí příkazu můžete zvýšit výkon operací uživatele.

  • Úroveň funkce/procedury: Pokud konkrétní funkce nebo procedury generují podstatné dočasné soubory, může být zvýšení work_mem hodnoty na konkrétní úrovni funkce nebo procedury přínosné. ALTER FUNCTION Pomocí příkazu nebo ALTER PROCEDURE příkazu přidělte těmto operacím konkrétně více paměti.

  • Úroveň databáze: Změna work_mem na úrovni databáze, pokud pouze konkrétní databáze generují vysoký počet dočasných souborů.

  • Globální úroveň: Pokud analýza systému odhalí, že většina dotazů generuje malé dočasné soubory, zatímco jen několik vytváří velké soubory, může být obezřetné globálně zvýšit work_mem hodnotu. Tato akce usnadňuje zpracování většiny dotazů v paměti, takže se můžete vyhnout operacím založeným na disku a zlepšit efektivitu. Vždy ale buďte opatrní a monitorujte využití paměti na vašem serveru, abyste zajistili, že dokáže zpracovat zvýšenou work_mem hodnotu.

Určení minimální hodnoty work_mem pro operace řazení

Pokud chcete najít minimální work_mem hodnotu konkrétního dotazu, zejména pro dotaz, který během procesu řazení generuje dočasné diskové soubory, začněte zvážením dočasné velikosti souboru vygenerovaného během provádění dotazu. Pokud například dotaz generuje dočasný soubor o velikosti 20 MB:

  1. Připojte se k databázi pomocí psql nebo preferovaného klienta PostgreSQL.
  2. Při zpracování v paměti nastavte počáteční work_mem hodnotu o něco vyšší než 20 MB, aby se při zpracování v paměti zohlednily další hlavičky. Použijte příkaz, například: SET work_mem TO '25MB'.
  3. Spusťte EXPLAIN ANALYZE na problematický dotaz ve stejné relaci.
  4. Zkontrolujte výstup pro "Sort Method: quicksort Memory: xkB". Pokud to znamená "external merge Disk: xkB", zvyšte work_mem hodnotu přírůstkově a znovu otestujte, dokud "quicksort Memory" se nezobrazí. Zobrazení "quicksort Memory" signalizuje, že dotaz nyní pracuje v paměti.
  5. Jakmile určíte hodnotu prostřednictvím této metody, můžete ji použít globálně nebo na podrobnějších úrovních (jak je popsáno výše) tak, aby vyhovovala vašim provozním potřebám.

autovacuum_work_mem

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální paměť, kterou bude používat každý pracovní proces automatického úklidu.
Datový typ celočíslo
Výchozí hodnota -1
Povolené hodnoty -1-2097151
Typ parametru dynamický
Dokumentace autovacuum_work_mem

dynamický_typ_sdílené_paměti

Atribuční prvek Hodnota
Kategorie Využití prostředků / paměť
Popis Vybere použitou implementaci dynamické sdílené paměti.
Datový typ výčet
Výchozí hodnota posix
Povolené hodnoty posix
Typ parametru jen pro čtení
Dokumentace dynamic_shared_memory_type

velké stránky

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Povolí nebo zakáže použití větších paměťových stránek. Toto nastavení se nevztahuje na servery, které mají méně než 4 virtuální jádra.
Datový typ výčet
Výchozí hodnota try
Povolené hodnoty on,off,try
Typ parametru statický
Dokumentace huge_pages

Popis

Obrovské stránky jsou funkce, která umožňuje správu paměti ve větších blocích. Bloky o velikosti až 2 MB můžete obvykle spravovat na rozdíl od standardních 4kB stránek.

Použití velkých stránek může nabídnout výhody výkonu, které efektivně odlehčí zátěž procesoru.

  • Snižují režijní náklady spojené s úlohami správy paměti, například snížením počtu chyb v překladové vyrovnávací paměti (TLB).
  • Zkracují dobu potřebnou ke správě paměti.

Konkrétně v PostgreSQL můžete používat obrovské stránky pouze pro oblast sdílené paměti. Pro sdílené vyrovnávací paměti je přidělena významná část oblasti sdílené paměti.

Další výhodou je, že velké stránky brání odložení oblasti sdílené paměti na disk, což dále stabilizuje výkon.

Doporučení

  • Pro servery, které mají významné paměťové prostředky, se vyhněte zakázání obrovských stránek. Zakázání obrovských stránek by mohlo ohrozit výkon.
  • Pokud začnete s menším serverem, který nepodporuje obrovské stránky, ale očekáváte rozšíření na server, který je podporuje, ponechte nastavení huge_pages na TRY pro zajištění bezproblémového přechodu a optimálního výkonu.

Poznámky specifické pro Azure

Pro servery se čtyřmi nebo více virtuálními jádry se obrovské stránky automaticky přidělují ze základního operačního systému. Tato funkce není dostupná pro servery s méně než čtyřmi virtuálními jádry. Počet obrovských stránek se automaticky upraví, pokud dojde ke změně jakéhokoli nastavení sdílené paměti, včetně změn provedených na shared_buffers.

maintenance_work_mem

Vlastnost Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální paměť, která se má použít pro operace údržby, jako je VACUUM, vytvoření indexu.
Datový typ integer
Výchozí hodnota Závisí na prostředcích (virtuálních jádrech, paměti RAM nebo místo na disku) přidělených serveru.
Povolené hodnoty 1024-2097151
Typ parametru dynamický
Dokumentace maintenance_work_mem

Popis

maintenance_work_mem je parametr konfigurace v PostgreSQL. Řídí množství paměti přidělené pro operace údržby, například VACUUM, CREATE INDEXa ALTER TABLE. Na rozdíl od work_memtoho, co ovlivňuje přidělení paměti pro operace dotazů, maintenance_work_mem je vyhrazeno pro úlohy, které udržují a optimalizují strukturu databáze.

![POZNÁMKA] Nastavení maintenance_work_mem na příliš agresivní hodnoty by mohlo občas způsobit chybu nedostatku paměti v systému. Před provedením změn tohoto parametru je velmi důležité pochopit množství paměti dostupné na serveru a počet souběžných operací, které by mohly přidělit paměť pro výše popsané úlohy.

Klíčové body

  • Limit vakuové paměti: Chcete-li urychlit vyčištění mrtvých záznamů zvýšením maintenance_work_mem, mějte na paměti, že VACUUM má integrované omezení pro shromažďování identifikátorů mrtvých záznamů. Pro tento proces může používat pouze až 1 GB paměti.
  • Oddělení paměti pro autovacuum: Můžete použít nastavení autovacuum_work_mem k řízení paměti, kterou operace autovacuum využívají samostatně. Toto nastavení funguje jako podmnožina maintenance_work_mem. Můžete se rozhodnout, kolik paměti autovacuum používá, aniž by to mělo vliv na přidělení paměti pro jiné úlohy údržby a operace definice dat.

Poznámky specifické pro Azure

Výchozí hodnota parametru maintenance_work_mem serveru se vypočítá při zřizování instance flexibilního serveru Azure Database for PostgreSQL na základě názvu produktu, který vyberete pro jeho výpočetní prostředky. Jakékoli následné změny výběru produktu na výpočetní prostředky, které podporují flexibilní server, nebudou mít žádný vliv na výchozí hodnotu parametru maintenance_work_mem serveru dané instance.

Pokaždé, když změníte produkt přiřazený k instanci, měli byste také upravit hodnotu maintenance_work_mem parametru podle hodnot v následujícím vzorci.

Vzorec použitý k výpočtu hodnoty maintenance_work_mem je (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Na základě předchozího vzorce by následující tabulka uvádí hodnoty, na které by byl tento parametr serveru nastavený v závislosti na velikosti zřízené paměti:

Velikost paměti paměť pro údržbu
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GB 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 GB 508 928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_prepared_transactions

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální počet současně připravených transakcí. Při spuštění serveru repliky musíte tento parametr nastavit na stejnou nebo vyšší hodnotu než na primárním serveru.
Datový typ integer
Výchozí hodnota 0
Povolené hodnoty 0-262143
Typ parametru statický
Dokumentace max_připravené_transakce

max_stack_depth (maximální hloubka zásobníku)

Vlastnost Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální hloubku zásobníku v kilobajtech.
Datový typ integer
Výchozí hodnota 2048
Povolené hodnoty 2048
Typ parametru jen pro čtení
Dokumentace max_stack_depth

shared_buffers

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví počet sdílených vyrovnávacích pamětí používaných serverem. Jednotka je 8 kB. Povolené hodnoty jsou v rozsahu 10 % – 75 % dostupné paměti.
Datový typ integer
Výchozí hodnota Závisí na prostředcích (virtuálních jádrech, paměti RAM nebo místo na disku) přidělených serveru.
Povolené hodnoty 16-1073741823
Typ parametru statický
Dokumentace shared_buffers

Popis

Parametr shared_buffers konfigurace určuje množství systémové paměti přidělené databázi PostgreSQL pro ukládání dat do vyrovnávací paměti. Slouží jako centralizovaný fond paměti, který je přístupný pro všechny databázové procesy.

Když jsou data potřeba, databázový proces nejprve zkontroluje sdílenou vyrovnávací paměť. Pokud jsou požadovaná data přítomná, rychle se načtou a obejdou časově náročné čtení disku. Sdílené vyrovnávací paměti slouží jako zprostředkovatel mezi databázovými procesy a diskem a efektivně snižuje počet požadovaných vstupně-výstupních operací.

Poznámky specifické pro Azure

Výchozí hodnota parametru shared_buffers serveru se vypočítá při zřizování instance flexibilního serveru Azure Database for PostgreSQL na základě názvu produktu, který vyberete pro jeho výpočetní prostředky. Jakékoli následné změny výběru produktu na výpočetní prostředky, které podporují flexibilní server, nemají žádný vliv na výchozí hodnotu parametru shared_buffers serveru dané instance.

Pokaždé, když změníte produkt přiřazený k instanci, měli byste také upravit hodnotu parametru shared_buffers podle hodnot v následujících vzorcích.

Pro virtuální počítače s až 2 GiB paměti, vzorec použitý k výpočtu hodnoty shared_buffers je memoryGib * 16384.

Pro virtuální počítače s více než 2 GiB, vzorec použitý k výpočtu hodnoty shared_buffers je memoryGib * 32768.

Na základě předchozího vzorce by následující tabulka uvádí hodnoty, na které by byl tento parametr serveru nastavený v závislosti na velikosti zřízené paměti:

Velikost paměti shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

dočasné buffery

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví maximální počet dočasných vyrovnávacích pamětí používaných každou relací databáze.
Datový typ celočíselný
Výchozí hodnota 1024
Povolené hodnoty 100-1073741823
Typ parametru dynamický
Dokumentace temp_buffers

pracovní paměť

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví velikost paměti, kterou budou používat interní operace řazení a tabulky hash před zápisem do dočasných souborů disku.
Datový typ integer
Výchozí hodnota 4096
Povolené hodnoty 4096-2097151
Typ parametru dynamický
Dokumentace work_mem

Popis

Parametr work_mem v PostgreSQL řídí množství paměti přidělené určitým interním operacím v oblasti privátní paměti každé relace databáze. Příklady těchto operací jsou řazení a hashování.

Na rozdíl od sdílených vyrovnávacích pamětí, které jsou v oblasti sdílené paměti, je work_mem přidělen v soukromém paměťovém prostoru pro jednotlivé relace nebo dotazy. Nastavením odpovídající work_mem velikosti můžete výrazně zlepšit efektivitu těchto operací a snížit potřebu zápisu dočasných dat na disk.

Klíčové body

  • Paměť privátního připojení: work_mem je součástí privátní paměti, kterou každá relace databáze používá. Tato paměť se liší od oblasti sdílené paměti, kterou používá shared_buffers.
  • Specifické použití pro dotazy: Ne všechny relace nebo dotazy používají work_mem. Jednoduché dotazy jako SELECT 1 je nepravděpodobné, že by vyžadovaly work_mem. Složité dotazy, které zahrnují operace, jako je řazení nebo hashování, však mohou spotřebovávat jeden nebo více bloků work_memdat .
  • Paralelní operace: U dotazů, které pokrývají více paralelních back-endů work_mem, může každý back-end potenciálně použít jeden nebo více bloků dat .

Monitorování a úpravy work_mem

Je nezbytné nepřetržitě monitorovat výkon systému a podle potřeby upravovat work_mem , hlavně pokud jsou doby provádění dotazů související s operacemi řazení nebo hash pomalé. Tady jsou způsoby monitorování výkonu pomocí nástrojů dostupných na webu Azure Portal:

  • Přehled výkonu dotazů: Zkontrolujte nejčastější dotazy na kartě dočasných souborů a identifikujte dotazy, které generují dočasné soubory. Tato situace naznačuje, že je možné zvýšit work_mem.
  • Průvodci odstraňováním potíží: K identifikaci problematických dotazů použijte kartu Vysoké dočasné soubory v průvodcích odstraňováním potíží.
Členitá úprava

Při správě parametru work_mem je často efektivnější přijmout podrobný přístup k úpravě, nikoli nastavit globální hodnotu. Tento přístup zajišťuje, že přidělíte paměť uvážlivě na základě konkrétních potřeb procesů a uživatelů. Minimalizuje také riziko vzniku problémů s nedostatkem paměti. Tady je postup, jak na to:

  • Úroveň uživatele: Pokud je konkrétní uživatel primárně zapojen do úloh agregace nebo generování sestav, které jsou náročné na paměť, zvažte přizpůsobení work_mem hodnoty pro daného uživatele. ALTER ROLE Pomocí příkazu můžete zvýšit výkon operací uživatele.

  • Úroveň funkce/procedury: Pokud konkrétní funkce nebo procedury generují podstatné dočasné soubory, může být zvýšení work_mem hodnoty na konkrétní úrovni funkce nebo procedury přínosné. ALTER FUNCTION Pomocí příkazu nebo ALTER PROCEDURE příkazu přidělte těmto operacím konkrétně více paměti.

  • Úroveň databáze: Změna work_mem na úrovni databáze, pokud pouze konkrétní databáze generují vysoký počet dočasných souborů.

  • Globální úroveň: Pokud analýza systému odhalí, že většina dotazů generuje malé dočasné soubory, zatímco jen několik vytváří velké soubory, může být obezřetné globálně zvýšit work_mem hodnotu. Tato akce usnadňuje zpracování většiny dotazů v paměti, takže se můžete vyhnout operacím založeným na disku a zlepšit efektivitu. Vždy ale buďte opatrní a monitorujte využití paměti na vašem serveru, abyste zajistili, že dokáže zpracovat zvýšenou work_mem hodnotu.

Určení minimální hodnoty work_mem pro operace řazení

Pokud chcete najít minimální work_mem hodnotu konkrétního dotazu, zejména pro dotaz, který během procesu řazení generuje dočasné diskové soubory, začněte zvážením dočasné velikosti souboru vygenerovaného během provádění dotazu. Pokud například dotaz generuje dočasný soubor o velikosti 20 MB:

  1. Připojte se k databázi pomocí psql nebo preferovaného klienta PostgreSQL.
  2. Při zpracování v paměti nastavte počáteční work_mem hodnotu o něco vyšší než 20 MB, aby se při zpracování v paměti zohlednily další hlavičky. Použijte příkaz, například: SET work_mem TO '25MB'.
  3. Spusťte problémový dotaz EXPLAIN ANALYZE ve stejné relaci.
  4. Zkontrolujte výstup pro "Sort Method: quicksort Memory: xkB". Pokud to znamená "external merge Disk: xkB", zvyšte work_mem hodnotu přírůstkově a znovu otestujte, dokud "quicksort Memory" se nezobrazí. Objevení "quicksort Memory" signalizuje, že dotaz nyní běží v paměti.
  5. Jakmile určíte hodnotu prostřednictvím této metody, můžete ji použít globálně nebo na podrobnějších úrovních (jak je popsáno výše) tak, aby vyhovovala vašim provozním potřebám.