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í proces automatického úklidu.
Datový typ integer
Default value -1
Povolené hodnoty -1-2097151
Typ parametru dynamic
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
Default value 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 mají použít pro tabulky hash.
Datový typ numerické
Default value 2
Povolené hodnoty 1-1000
Typ parametru dynamic
Dokumentace hash_mem_multiplier

huge_pages

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Povolí nebo zakáže použití obrovský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
Default value try
Povolené hodnoty on,off,try
Typ parametru static
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ýhody výkonu, které efektivně přesměrují 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. Pro sdílené vyrovnávací paměti je přidělena významná část oblasti sdílené paměti.

Další výhodou je, že obrovské stránky brání prohození 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 vertikální navýšení kapacity na server, který provede, 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 obrovských stránek se automaticky upraví, pokud dojde ke změně nastavení sdílené paměti, včetně změn shared_buffers.

huge_page_size

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Velikost obrovské stránky, kterou byste měli požadovat.
Datový typ integer
Default value 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
Default value 65536
Povolené hodnoty 65536
Typ parametru jen pro čtení
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 operace údržby, jako je vakuum, vytvořit index.
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 1024-2097151
Typ parametru dynamic
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.

Klíčové body

  • Vakuový limit paměti: Chcete-li urychlit vyčištění mrtvých řazených kolekcí členů zvýšením maintenance_work_mem, mějte na paměti, že VACUUM má integrované omezení pro shromažďování identifikátorů řazené kolekce členů. 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 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 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
Default value 0
Povolené hodnoty 0-262143
Typ parametru static
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
Default value 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
Default value 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í sdílené paměti používané serverem. 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 static
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 přítomná, rychle se načtou a objdou časově náročným čtením 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

shared_memory_type

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
Default value mmap
Povolené hodnoty mmap
Typ parametru jen pro čtení
Dokumentace shared_memory_type

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 jednotlivými relacemi databáze.
Datový typ integer
Default value 1024
Povolené hodnoty 100-1073741823
Typ parametru dynamic
Dokumentace temp_buffers

vacuum_buffer_usage_limit

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví velikost fondu vyrovnávací paměti pro vakuum, ANALYZOVAT a autovacuum.
Datový typ integer
Default value 2048
Povolené hodnoty 0-16777216
Typ parametru dynamic
Dokumentace vacuum_buffer_usage_limit

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 dynamic
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, která shared_buffers se 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íží.
Č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 můžete přejí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 dynamic
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
Default value 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 mají použít pro tabulky hash.
Datový typ numerické
Default value 2
Povolené hodnoty 1-1000
Typ parametru dynamic
Dokumentace hash_mem_multiplier

huge_pages

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Povolí nebo zakáže použití obrovský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
Default value try
Povolené hodnoty on,off,try
Typ parametru static
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ýhody výkonu, které efektivně přesměrují 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. Pro sdílené vyrovnávací paměti je přidělena významná část oblasti sdílené paměti.

Další výhodou je, že obrovské stránky brání prohození 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 vertikální navýšení kapacity na server, který provede, 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 obrovských stránek se automaticky upraví, pokud dojde ke změně nastavení sdílené paměti, včetně změn shared_buffers.

huge_page_size

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Velikost obrovské stránky, kterou byste měli požadovat.
Datový typ integer
Default value 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
Default value 65536
Povolené hodnoty 64-2147483647
Typ parametru dynamic
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 operace údržby, jako je vakuum, vytvořit index.
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 1024-2097151
Typ parametru dynamic
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.

Klíčové body

  • Vakuový limit paměti: Chcete-li urychlit vyčištění mrtvých řazených kolekcí členů zvýšením maintenance_work_mem, mějte na paměti, že VACUUM má integrované omezení pro shromažďování identifikátorů řazené kolekce členů. 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 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 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
Default value 0
Povolené hodnoty 0-262143
Typ parametru static
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
Default value 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
Default value 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í sdílené paměti používané serverem. 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 static
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 přítomná, rychle se načtou a objdou časově náročným čtením 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

shared_memory_type

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
Default value mmap
Povolené hodnoty mmap
Typ parametru jen pro čtení
Dokumentace shared_memory_type

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 jednotlivými relacemi databáze.
Datový typ integer
Default value 1024
Povolené hodnoty 100-1073741823
Typ parametru dynamic
Dokumentace temp_buffers

vacuum_buffer_usage_limit

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Nastaví velikost fondu vyrovnávací paměti pro vakuum, ANALYZOVAT a autovacuum.
Datový typ integer
Default value 256
Povolené hodnoty 0-16777216
Typ parametru dynamic
Dokumentace vacuum_buffer_usage_limit

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 dynamic
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, která shared_buffers se 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íží.
Č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 můžete přejí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 dynamic
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
Default value 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 mají použít pro tabulky hash.
Datový typ numerické
Default value 2
Povolené hodnoty 1-1000
Typ parametru dynamic
Dokumentace hash_mem_multiplier

huge_pages

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Povolí nebo zakáže použití obrovský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
Default value try
Povolené hodnoty on,off,try
Typ parametru static
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ýhody výkonu, které efektivně přesměrují 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. Pro sdílené vyrovnávací paměti je přidělena významná část oblasti sdílené paměti.

Další výhodou je, že obrovské stránky brání prohození 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 vertikální navýšení kapacity na server, který provede, 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 obrovských stránek se automaticky upraví, pokud dojde ke změně nastavení sdílené paměti, včetně změn shared_buffers.

huge_page_size

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Velikost obrovské stránky, kterou byste měli požadovat.
Datový typ integer
Default value 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
Default value 65536
Povolené hodnoty 64-2147483647
Typ parametru dynamic
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 operace údržby, jako je vakuum, vytvořit index.
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 1024-2097151
Typ parametru dynamic
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.

Klíčové body

  • Vakuový limit paměti: Chcete-li urychlit vyčištění mrtvých řazených kolekcí členů zvýšením maintenance_work_mem, mějte na paměti, že VACUUM má integrované omezení pro shromažďování identifikátorů řazené kolekce členů. 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 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 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
Default value 0
Povolené hodnoty 0-262143
Typ parametru static
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
Default value 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
Default value 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í sdílené paměti používané serverem. 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 static
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 přítomná, rychle se načtou a objdou časově náročným čtením 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

shared_memory_type

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
Default value mmap
Povolené hodnoty mmap
Typ parametru jen pro čtení
Dokumentace shared_memory_type

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 jednotlivými relacemi databáze.
Datový typ integer
Default value 1024
Povolené hodnoty 100-1073741823
Typ parametru dynamic
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
Default value 4096
Povolené hodnoty 4096-2097151
Typ parametru dynamic
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, která shared_buffers se 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íží.
Č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 můžete přejí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 dynamic
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
Default value 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 mají použít pro tabulky hash.
Datový typ numerické
Default value 1
Povolené hodnoty 1-1000
Typ parametru dynamic
Dokumentace hash_mem_multiplier

huge_pages

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Povolí nebo zakáže použití obrovský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
Default value try
Povolené hodnoty on,off,try
Typ parametru static
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ýhody výkonu, které efektivně přesměrují 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. Pro sdílené vyrovnávací paměti je přidělena významná část oblasti sdílené paměti.

Další výhodou je, že obrovské stránky brání prohození 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 vertikální navýšení kapacity na server, který provede, 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 obrovských stránek se automaticky upraví, pokud dojde ke změně nastavení sdílené paměti, včetně změn shared_buffers.

huge_page_size

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Velikost obrovské stránky, kterou byste měli požadovat.
Datový typ integer
Default value 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
Default value 65536
Povolené hodnoty 64-2147483647
Typ parametru dynamic
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 operace údržby, jako je vakuum, vytvořit index.
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 1024-2097151
Typ parametru dynamic
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.

Klíčové body

  • Vakuový limit paměti: Chcete-li urychlit vyčištění mrtvých řazených kolekcí členů zvýšením maintenance_work_mem, mějte na paměti, že VACUUM má integrované omezení pro shromažďování identifikátorů řazené kolekce členů. 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 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 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
Default value 0
Povolené hodnoty 0-262143
Typ parametru static
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
Default value 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
Default value 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í sdílené paměti používané serverem. 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 static
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 přítomná, rychle se načtou a objdou časově náročným čtením 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

shared_memory_type

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
Default value mmap
Povolené hodnoty mmap
Typ parametru jen pro čtení
Dokumentace shared_memory_type

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 jednotlivými relacemi databáze.
Datový typ integer
Default value 1024
Povolené hodnoty 100-1073741823
Typ parametru dynamic
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
Default value 4096
Povolené hodnoty 4096-2097151
Typ parametru dynamic
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, která shared_buffers se 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íží.
Č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 můžete přejí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 dynamic
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
Default value 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 mají použít pro tabulky hash.
Datový typ numerické
Default value 1
Povolené hodnoty 1-1000
Typ parametru dynamic
Dokumentace hash_mem_multiplier

huge_pages

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Povolí nebo zakáže použití obrovský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
Default value try
Povolené hodnoty on,off,try
Typ parametru static
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ýhody výkonu, které efektivně přesměrují 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. Pro sdílené vyrovnávací paměti je přidělena významná část oblasti sdílené paměti.

Další výhodou je, že obrovské stránky brání prohození 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 vertikální navýšení kapacity na server, který provede, 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 obrovských stránek se automaticky upraví, pokud dojde ke změně nastavení sdílené paměti, 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
Default value 65536
Povolené hodnoty 64-2147483647
Typ parametru dynamic
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 operace údržby, jako je vakuum, vytvořit index.
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 1024-2097151
Typ parametru dynamic
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.

Klíčové body

  • Vakuový limit paměti: Chcete-li urychlit vyčištění mrtvých řazených kolekcí členů zvýšením maintenance_work_mem, mějte na paměti, že VACUUM má integrované omezení pro shromažďování identifikátorů řazené kolekce členů. 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 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 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
Default value 0
Povolené hodnoty 0-262143
Typ parametru static
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
Default value 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é paměti používané serverem. 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 static
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 přítomná, rychle se načtou a objdou časově náročným čtením 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

shared_memory_type

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
Default value mmap
Povolené hodnoty mmap
Typ parametru jen pro čtení
Dokumentace shared_memory_type

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 jednotlivými relacemi databáze.
Datový typ integer
Default value 1024
Povolené hodnoty 100-1073741823
Typ parametru dynamic
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
Default value 4096
Povolené hodnoty 4096-2097151
Typ parametru dynamic
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, která shared_buffers se 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íží.
Č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 můžete přejí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 dynamic
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
Default value 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 mají použít pro tabulky hash.
Datový typ numerické
Default value 1
Povolené hodnoty 1-1000
Typ parametru dynamic
Dokumentace hash_mem_multiplier

huge_pages

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Povolí nebo zakáže použití obrovský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
Default value try
Povolené hodnoty on,off,try
Typ parametru static
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ýhody výkonu, které efektivně přesměrují 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. Pro sdílené vyrovnávací paměti je přidělena významná část oblasti sdílené paměti.

Další výhodou je, že obrovské stránky brání prohození 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 vertikální navýšení kapacity na server, který provede, 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 obrovských stránek se automaticky upraví, pokud dojde ke změně nastavení sdílené paměti, včetně změn 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 vakuum, vytvořit index.
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 1024-2097151
Typ parametru dynamic
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.

Klíčové body

  • Vakuový limit paměti: Chcete-li urychlit vyčištění mrtvých řazených kolekcí členů zvýšením maintenance_work_mem, mějte na paměti, že VACUUM má integrované omezení pro shromažďování identifikátorů řazené kolekce členů. 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 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 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
Default value 0
Povolené hodnoty 0-262143
Typ parametru static
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
Default value 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é paměti používané serverem. 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 static
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 přítomná, rychle se načtou a objdou časově náročným čtením 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

shared_memory_type

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
Default value mmap
Povolené hodnoty mmap
Typ parametru jen pro čtení
Dokumentace shared_memory_type

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 jednotlivými relacemi databáze.
Datový typ integer
Default value 1024
Povolené hodnoty 100-1073741823
Typ parametru dynamic
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
Default value 4096
Povolené hodnoty 4096-2097151
Typ parametru dynamic
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, která shared_buffers se 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íží.
Č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 můžete přejí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 dynamic
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
Default value posix
Povolené hodnoty posix
Typ parametru jen pro čtení
Dokumentace dynamic_shared_memory_type

huge_pages

Atribut Hodnota
Kategorie Využití prostředků / paměť
Popis Povolí nebo zakáže použití obrovský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
Default value try
Povolené hodnoty on,off,try
Typ parametru static
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ýhody výkonu, které efektivně přesměrují 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. Pro sdílené vyrovnávací paměti je přidělena významná část oblasti sdílené paměti.

Další výhodou je, že obrovské stránky brání prohození 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 vertikální navýšení kapacity na server, který provede, 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 obrovských stránek se automaticky upraví, pokud dojde ke změně nastavení sdílené paměti, včetně změn 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 vakuum, vytvořit index.
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 1024-2097151
Typ parametru dynamic
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.

Klíčové body

  • Vakuový limit paměti: Chcete-li urychlit vyčištění mrtvých řazených kolekcí členů zvýšením maintenance_work_mem, mějte na paměti, že VACUUM má integrované omezení pro shromažďování identifikátorů řazené kolekce členů. 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 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 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
Default value 0
Povolené hodnoty 0-262143
Typ parametru static
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
Default value 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é paměti používané serverem. 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 static
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 přítomná, rychle se načtou a objdou časově náročným čtením 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

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 jednotlivými relacemi databáze.
Datový typ integer
Default value 1024
Povolené hodnoty 100-1073741823
Typ parametru dynamic
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
Default value 4096
Povolené hodnoty 4096-2097151
Typ parametru dynamic
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, která shared_buffers se 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íží.
Č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 můžete přejí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.