Sdílet prostřednictvím


Využití zdrojů / Paměť

autovacuum_work_mem

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

commit_timestamp_buffers

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví velikost vyhrazeného buffer poolu používaného pro cache commit timestampů. Zadejte hodnotu 0, která má být určena jako zlomek shared_buffers.
Datový typ integer
Výchozí hodnota 1024
Povolené hodnoty 0-131072
Typ parametru statický
Documentation commit_timestamp_buffers

dynamic_shared_memory_type

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Vybere použitou implementaci dynamické sdílené paměti.
Datový typ výčet
Výchozí hodnota posix
Povolené hodnoty posix
Typ parametru jen pro čtení
Documentation dynamický_typ_sdílené_paměti

hash_mem_multiplier

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Násobek "work_mem" pro použití v hašovacích tabulkách.
Datový typ numerické
Výchozí hodnota 2
Povolené hodnoty 1-1000
Typ parametru dynamic
Documentation hash_mem_multiplier

velké stránky

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Použití velkých stránek na Linuxu nebo na Windows
Datový typ výčet
Výchozí hodnota try
Povolené hodnoty on,off,try
Typ parametru statický
Documentation huge_pages

Description

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

Použití velkých stránek paměti může nabídnout výhody výkonu, které účinně odlehčí zátěž procesoru:

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

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

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

Recommendations

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

Poznámky specifické pro Azure

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

velikost_obří_stránky

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Velikost velké stránky, kterou byste měli žádat.
Datový typ integer
Výchozí hodnota 0
Povolené hodnoty 0
Typ parametru jen pro čtení
Documentation huge_page_size

io_combine_limit

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Omezení velikosti čtení a zápisů dat
Datový typ integer
Výchozí hodnota 16
Povolené hodnoty 1-128
Typ parametru dynamic
Documentation io_combine_limit

io_max_combine_limit

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Omezení na úrovni serveru, které omezí io_combine_limit.
Datový typ integer
Výchozí hodnota 16
Povolené hodnoty 1-128
Typ parametru dynamic
Documentation io_max_combine_limit

io_max_concurrency

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Maximální počet IO, které může jeden proces spustit současně.
Datový typ integer
Výchozí hodnota 64
Povolené hodnoty -1-1024
Typ parametru statický
Documentation io_max_concurrency

metoda_io

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Vybere metodu pro spouštění asynchronních vstupně-výstupních operací.
Datový typ výčet
Výchozí hodnota worker
Povolené hodnoty worker,sync
Typ parametru statický
Documentation io_method

io_workers

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Počet vstupně-výstupních procesů pro io_method=worker
Datový typ integer
Výchozí hodnota 3
Povolené hodnoty 1-32
Typ parametru dynamic
Documentation io_workers

logical_decoding_work_mem

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví maximální paměť, která se má použít pro logické dekódování. Každý interní buffer pro změnu pořadí může použít tolik paměti, než dojde k zápisu na disk.
Datový typ integer
Výchozí hodnota 65536
Povolené hodnoty 64-2147483647
Typ parametru dynamic
Documentation logical_decoding_work_mem

maintenance_work_mem

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

Description

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

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

Klíčové body

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

Poznámky specifické pro Azure

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

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

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

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

Velikost paměti maintenance_work_mem
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GB 332 800 KiB
48 GiB 367 616 KiB
64 GiB 392 192 KiB
80 GiB 410 624 KiB
128 GiB 450 560 KiB
160 GiB 468 992 KiB
192 GiB 484 352 KiB
256 GB 508 928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_připravené_transakce

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví maximální počet současně připravených transakcí.
Datový typ integer
Výchozí hodnota 0
Povolené hodnoty 0-262143
Typ parametru statický
Documentation max_prepared_transactions

maximální hloubka zásobníku

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

min_dynamic_shared_memory

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

multixact_member_buffers

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví velikost vyhrazeného fondu vyrovnávací paměti používaného pro mezipaměť členů MultiXact.
Datový typ integer
Výchozí hodnota 32
Povolené hodnoty 16-131072
Typ parametru statický
Documentation multixact_member_buffers

multixact_offset_buffers

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví velikost vyhrazeného fondu vyrovnávací paměti používaného pro mezipaměť posunu MultiXact.
Datový typ integer
Výchozí hodnota 16
Povolené hodnoty 16-131072
Typ parametru statický
Documentation multixact_offset_buffers

notify_buffers

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví velikost vyhrazeného fondu vyrovnávací paměti používaného pro mezipaměť zpráv LISTEN/NOTIFY.
Datový typ integer
Výchozí hodnota 16
Povolené hodnoty 16-131072
Typ parametru statický
Documentation notify_buffers

serializovatelné_buffers

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví velikost vyhrazeného poolu bufferu používaného pro serializovatelný cache transakcí.
Datový typ integer
Výchozí hodnota 32
Povolené hodnoty 16-131072
Typ parametru statický
Documentation serializable_buffers

shared_buffers

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví počet vyrovnávacích pamětí, které používá server.
Datový typ integer
Výchozí hodnota Závisí na prostředcích (virtuálních jádrech, paměti RAM nebo místo na disku) přidělených serveru.
Povolené hodnoty 16-1073741823
Typ parametru statický
Documentation shared_buffers

Description

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

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

Poznámky specifické pro Azure

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

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

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

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

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

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

sdílený_typ_paměti

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Vybere implementaci sdílené paměti použitou pro hlavní oblast sdílené paměti.
Datový typ výčet
Výchozí hodnota mmap
Povolené hodnoty mmap
Typ parametru jen pro čtení
Documentation shared_memory_type

subtransaction_buffers

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví velikost vyhrazeného fondu vyrovnávací paměti používané pro mezipaměť subtransakcí. Zadejte hodnotu 0, která má být určena jako zlomek shared_buffers.
Datový typ integer
Výchozí hodnota 1024
Povolené hodnoty 0-131072
Typ parametru statický
Documentation subtransaction_buffers

temp_buffers

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví maximální počet dočasných vyrovnávacích pamětí použitých v každé relaci.
Datový typ integer
Výchozí hodnota 1024
Povolené hodnoty 100-1073741823
Typ parametru dynamic
Documentation temp_buffers

transakční buffery

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví velikost vyhrazené oblasti buffer poolu používaného pro mezipaměť stavu transakce. Zadejte hodnotu 0, která má být určena jako zlomek shared_buffers.
Datový typ integer
Výchozí hodnota 1024
Povolené hodnoty 0-131072
Typ parametru statický
Documentation přenosové_pufry

vacuum_buffer_usage_limit

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví velikost fondu vyrovnávací paměti pro VACUUM, ANALYZE a autovacuum.
Datový typ integer
Výchozí hodnota 2048
Povolené hodnoty 0-16777216
Typ parametru dynamic
Documentation vacuum_buffer_usage_limit

pracovní paměť

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví maximální paměť, která se má použít pro dotazovací pracovní prostory. Tuto velkou paměť může používat každá interní operace řazení a hashovací tabulka před přepnutím na dočasné diskové soubory.
Datový typ integer
Výchozí hodnota 4096
Povolené hodnoty 4096-2097151
Typ parametru dynamic
Documentation work_mem

Description

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 soukromém paměťovém prostoru pro jednotlivé relace nebo dotazy. Nastavením odpovídající work_mem velikosti můžete výrazně zlepšit efektivitu těchto operací a snížit potřebu zápisu dočasných dat na disk.

Klíčové body

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

Monitorování a úpravy work_mem

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

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

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

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

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

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

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

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

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

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

autovacuum_work_mem

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

commit_timestamp_buffers

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví velikost vyhrazeného buffer poolu používaného pro cache commit timestampů. Zadejte hodnotu 0, která má být určena jako zlomek shared_buffers.
Datový typ integer
Výchozí hodnota 1024
Povolené hodnoty 0-131072
Typ parametru statický
Documentation commit_timestamp_buffers

dynamic_shared_memory_type

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Vybere použitou implementaci dynamické sdílené paměti.
Datový typ výčet
Výchozí hodnota posix
Povolené hodnoty posix
Typ parametru jen pro čtení
Documentation dynamický_typ_sdílené_paměti

hash_mem_multiplier

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Násobek "work_mem" pro použití v hašovacích tabulkách.
Datový typ numerické
Výchozí hodnota 2
Povolené hodnoty 1-1000
Typ parametru dynamic
Documentation hash_mem_multiplier

velké stránky

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Použití velkých stránek na Linuxu nebo na Windows
Datový typ výčet
Výchozí hodnota try
Povolené hodnoty on,off,try
Typ parametru statický
Documentation huge_pages

Description

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

Použití velkých stránek paměti může nabídnout výhody výkonu, které účinně odlehčí zátěž procesoru:

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

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

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

Recommendations

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

Poznámky specifické pro Azure

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

velikost_obří_stránky

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Velikost velké stránky, kterou byste měli žádat.
Datový typ integer
Výchozí hodnota 0
Povolené hodnoty 0
Typ parametru jen pro čtení
Documentation huge_page_size

io_combine_limit

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Omezení velikosti čtení a zápisů dat
Datový typ integer
Výchozí hodnota 16
Povolené hodnoty 16
Typ parametru jen pro čtení
Documentation io_combine_limit

logical_decoding_work_mem

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví maximální paměť, která se má použít pro logické dekódování. Každý interní buffer pro změnu pořadí může použít tolik paměti, než dojde k zápisu na disk.
Datový typ integer
Výchozí hodnota 65536
Povolené hodnoty 64-2147483647
Typ parametru dynamic
Documentation logical_decoding_work_mem

maintenance_work_mem

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

Description

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

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

Klíčové body

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

Poznámky specifické pro Azure

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

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

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

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

Velikost paměti maintenance_work_mem
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GB 332 800 KiB
48 GiB 367 616 KiB
64 GiB 392 192 KiB
80 GiB 410 624 KiB
128 GiB 450 560 KiB
160 GiB 468 992 KiB
192 GiB 484 352 KiB
256 GB 508 928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_připravené_transakce

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví maximální počet současně připravených transakcí.
Datový typ integer
Výchozí hodnota 0
Povolené hodnoty 0-262143
Typ parametru statický
Documentation max_prepared_transactions

maximální hloubka zásobníku

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

min_dynamic_shared_memory

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

multixact_member_buffers

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví velikost vyhrazeného fondu vyrovnávací paměti používaného pro mezipaměť členů MultiXact.
Datový typ integer
Výchozí hodnota 32
Povolené hodnoty 16-131072
Typ parametru statický
Documentation multixact_member_buffers

multixact_offset_buffers

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví velikost vyhrazeného fondu vyrovnávací paměti používaného pro mezipaměť posunu MultiXact.
Datový typ integer
Výchozí hodnota 16
Povolené hodnoty 16-131072
Typ parametru statický
Documentation multixact_offset_buffers

notify_buffers

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví velikost vyhrazeného fondu vyrovnávací paměti používaného pro mezipaměť zpráv LISTEN/NOTIFY.
Datový typ integer
Výchozí hodnota 16
Povolené hodnoty 16-131072
Typ parametru statický
Documentation notify_buffers

serializovatelné_buffers

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví velikost vyhrazeného poolu bufferu používaného pro serializovatelný cache transakcí.
Datový typ integer
Výchozí hodnota 32
Povolené hodnoty 16-131072
Typ parametru statický
Documentation serializable_buffers

shared_buffers

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví počet vyrovnávacích pamětí, které používá server.
Datový typ integer
Výchozí hodnota Závisí na prostředcích (virtuálních jádrech, paměti RAM nebo místo na disku) přidělených serveru.
Povolené hodnoty 16-1073741823
Typ parametru statický
Documentation shared_buffers

Description

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

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

Poznámky specifické pro Azure

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

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

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

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

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

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

sdílený_typ_paměti

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Vybere implementaci sdílené paměti použitou pro hlavní oblast sdílené paměti.
Datový typ výčet
Výchozí hodnota mmap
Povolené hodnoty mmap
Typ parametru jen pro čtení
Documentation shared_memory_type

subtransaction_buffers

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví velikost vyhrazeného fondu vyrovnávací paměti používané pro mezipaměť subtransakcí. Zadejte hodnotu 0, která má být určena jako zlomek shared_buffers.
Datový typ integer
Výchozí hodnota 1024
Povolené hodnoty 0-131072
Typ parametru statický
Documentation subtransaction_buffers

temp_buffers

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví maximální počet dočasných vyrovnávacích pamětí použitých v každé relaci.
Datový typ integer
Výchozí hodnota 1024
Povolené hodnoty 100-1073741823
Typ parametru dynamic
Documentation temp_buffers

transakční buffery

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví velikost vyhrazené oblasti buffer poolu používaného pro mezipaměť stavu transakce. Zadejte hodnotu 0, která má být určena jako zlomek shared_buffers.
Datový typ integer
Výchozí hodnota 1024
Povolené hodnoty 0-131072
Typ parametru statický
Documentation přenosové_pufry

vacuum_buffer_usage_limit

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví velikost fondu vyrovnávací paměti pro VACUUM, ANALYZE a autovacuum.
Datový typ integer
Výchozí hodnota 2048
Povolené hodnoty 0-16777216
Typ parametru dynamic
Documentation vacuum_buffer_usage_limit

pracovní paměť

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví maximální paměť, která se má použít pro dotazovací pracovní prostory. Tuto velkou paměť může používat každá interní operace řazení a hashovací tabulka před přepnutím na dočasné diskové soubory.
Datový typ integer
Výchozí hodnota 4096
Povolené hodnoty 4096-2097151
Typ parametru dynamic
Documentation work_mem

Description

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 soukromém paměťovém prostoru pro jednotlivé relace nebo dotazy. Nastavením odpovídající work_mem velikosti můžete výrazně zlepšit efektivitu těchto operací a snížit potřebu zápisu dočasných dat na disk.

Klíčové body

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

Monitorování a úpravy work_mem

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

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

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

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

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

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

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

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

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

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

autovacuum_work_mem

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

dynamic_shared_memory_type

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Vybere použitou implementaci dynamické sdílené paměti.
Datový typ výčet
Výchozí hodnota posix
Povolené hodnoty posix
Typ parametru jen pro čtení
Documentation dynamický_typ_sdílené_paměti

hash_mem_multiplier

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Násobek work_mem, které se mají použít pro tabulky hash.
Datový typ numerické
Výchozí hodnota 2
Povolené hodnoty 1-1000
Typ parametru dynamic
Documentation hash_mem_multiplier

velké stránky

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description 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
Výchozí hodnota try
Povolené hodnoty on,off,try
Typ parametru statický
Documentation huge_pages

Description

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

Použití velkých stránek paměti může nabídnout výhody výkonu, které účinně odlehčí zátěž procesoru:

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

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

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

Recommendations

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

Poznámky specifické pro Azure

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

velikost_obří_stránky

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Velikost velké stránky, kterou byste měli žádat.
Datový typ integer
Výchozí hodnota 0
Povolené hodnoty 0
Typ parametru jen pro čtení
Documentation huge_page_size

logical_decoding_work_mem

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví maximální paměť, která se má použít pro logické dekódování.
Datový typ integer
Výchozí hodnota 65536
Povolené hodnoty 64-2147483647
Typ parametru dynamic
Documentation logical_decoding_work_mem

maintenance_work_mem

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

Description

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

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

Klíčové body

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

Poznámky specifické pro Azure

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

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

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

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

Velikost paměti maintenance_work_mem
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GB 332 800 KiB
48 GiB 367 616 KiB
64 GiB 392 192 KiB
80 GiB 410 624 KiB
128 GiB 450 560 KiB
160 GiB 468 992 KiB
192 GiB 484 352 KiB
256 GB 508 928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_připravené_transakce

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

maximální hloubka zásobníku

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

min_dynamic_shared_memory

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

shared_buffers

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

Description

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

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

Poznámky specifické pro Azure

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

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

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

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

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

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

sdílený_typ_paměti

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Vybere implementaci sdílené paměti použitou pro hlavní oblast sdílené paměti.
Datový typ výčet
Výchozí hodnota mmap
Povolené hodnoty mmap
Typ parametru jen pro čtení
Documentation shared_memory_type

temp_buffers

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

vacuum_buffer_usage_limit

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví velikost fondu vyrovnávací paměti pro VACUUM, ANALYZE a autovacuum.
Datový typ integer
Výchozí hodnota 256
Povolené hodnoty 0-16777216
Typ parametru dynamic
Documentation vacuum_buffer_usage_limit

pracovní paměť

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

Description

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 soukromém paměťovém prostoru pro jednotlivé relace nebo dotazy. Nastavením odpovídající work_mem velikosti můžete výrazně zlepšit efektivitu těchto operací a snížit potřebu zápisu dočasných dat na disk.

Klíčové body

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

Monitorování a úpravy work_mem

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

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

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

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

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

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

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

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

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

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

autovacuum_work_mem

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

dynamic_shared_memory_type

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Vybere použitou implementaci dynamické sdílené paměti.
Datový typ výčet
Výchozí hodnota posix
Povolené hodnoty posix
Typ parametru jen pro čtení
Documentation dynamický_typ_sdílené_paměti

hash_mem_multiplier

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Násobek work_mem, které se mají použít pro tabulky hash.
Datový typ numerické
Výchozí hodnota 2
Povolené hodnoty 1-1000
Typ parametru dynamic
Documentation hash_mem_multiplier

velké stránky

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description 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
Výchozí hodnota try
Povolené hodnoty on,off,try
Typ parametru statický
Documentation huge_pages

Description

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

Použití velkých stránek paměti může nabídnout výhody výkonu, které účinně odlehčí zátěž procesoru:

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

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

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

Recommendations

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

Poznámky specifické pro Azure

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

velikost_obří_stránky

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Velikost velké stránky, kterou byste měli žádat.
Datový typ integer
Výchozí hodnota 0
Povolené hodnoty 0
Typ parametru jen pro čtení
Documentation huge_page_size

logical_decoding_work_mem

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví maximální paměť, která se má použít pro logické dekódování.
Datový typ integer
Výchozí hodnota 65536
Povolené hodnoty 64-2147483647
Typ parametru dynamic
Documentation logical_decoding_work_mem

maintenance_work_mem

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

Description

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

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

Klíčové body

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

Poznámky specifické pro Azure

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

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

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

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

Velikost paměti maintenance_work_mem
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GB 332 800 KiB
48 GiB 367 616 KiB
64 GiB 392 192 KiB
80 GiB 410 624 KiB
128 GiB 450 560 KiB
160 GiB 468 992 KiB
192 GiB 484 352 KiB
256 GB 508 928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_připravené_transakce

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

maximální hloubka zásobníku

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

min_dynamic_shared_memory

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

shared_buffers

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

Description

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

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

Poznámky specifické pro Azure

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

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

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

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

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

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

sdílený_typ_paměti

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Vybere implementaci sdílené paměti použitou pro hlavní oblast sdílené paměti.
Datový typ výčet
Výchozí hodnota mmap
Povolené hodnoty mmap
Typ parametru jen pro čtení
Documentation shared_memory_type

temp_buffers

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

pracovní paměť

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

Description

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 soukromém paměťovém prostoru pro jednotlivé relace nebo dotazy. Nastavením odpovídající work_mem velikosti můžete výrazně zlepšit efektivitu těchto operací a snížit potřebu zápisu dočasných dat na disk.

Klíčové body

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

Monitorování a úpravy work_mem

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

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

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

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

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

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

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

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

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

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

autovacuum_work_mem

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

dynamic_shared_memory_type

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Vybere použitou implementaci dynamické sdílené paměti.
Datový typ výčet
Výchozí hodnota posix
Povolené hodnoty posix
Typ parametru jen pro čtení
Documentation dynamický_typ_sdílené_paměti

hash_mem_multiplier

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Násobek work_mem, které se mají použít pro tabulky hash.
Datový typ numerické
Výchozí hodnota 1
Povolené hodnoty 1-1000
Typ parametru dynamic
Documentation hash_mem_multiplier

velké stránky

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description 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
Výchozí hodnota try
Povolené hodnoty on,off,try
Typ parametru statický
Documentation huge_pages

Description

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

Použití velkých stránek paměti může nabídnout výhody výkonu, které účinně odlehčí zátěž procesoru:

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

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

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

Recommendations

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

Poznámky specifické pro Azure

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

velikost_obří_stránky

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Velikost velké stránky, kterou byste měli žádat.
Datový typ integer
Výchozí hodnota 0
Povolené hodnoty 0
Typ parametru jen pro čtení
Documentation huge_page_size

logical_decoding_work_mem

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví maximální paměť, která se má použít pro logické dekódování.
Datový typ integer
Výchozí hodnota 65536
Povolené hodnoty 64-2147483647
Typ parametru dynamic
Documentation logical_decoding_work_mem

maintenance_work_mem

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

Description

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

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

Klíčové body

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

Poznámky specifické pro Azure

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

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

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

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

Velikost paměti maintenance_work_mem
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GB 332 800 KiB
48 GiB 367 616 KiB
64 GiB 392 192 KiB
80 GiB 410 624 KiB
128 GiB 450 560 KiB
160 GiB 468 992 KiB
192 GiB 484 352 KiB
256 GB 508 928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_připravené_transakce

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

maximální hloubka zásobníku

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

min_dynamic_shared_memory

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

shared_buffers

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

Description

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

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

Poznámky specifické pro Azure

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

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

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

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

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

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

sdílený_typ_paměti

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Vybere implementaci sdílené paměti použitou pro hlavní oblast sdílené paměti.
Datový typ výčet
Výchozí hodnota mmap
Povolené hodnoty mmap
Typ parametru jen pro čtení
Documentation shared_memory_type

temp_buffers

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

pracovní paměť

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

Description

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 soukromém paměťovém prostoru pro jednotlivé relace nebo dotazy. Nastavením odpovídající work_mem velikosti můžete výrazně zlepšit efektivitu těchto operací a snížit potřebu zápisu dočasných dat na disk.

Klíčové body

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

Monitorování a úpravy work_mem

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

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

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

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

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

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

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

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

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

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

autovacuum_work_mem

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

dynamic_shared_memory_type

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Vybere použitou implementaci dynamické sdílené paměti.
Datový typ výčet
Výchozí hodnota posix
Povolené hodnoty posix
Typ parametru jen pro čtení
Documentation dynamický_typ_sdílené_paměti

hash_mem_multiplier

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Násobek work_mem, které se mají použít pro tabulky hash.
Datový typ numerické
Výchozí hodnota 1
Povolené hodnoty 1-1000
Typ parametru dynamic
Documentation hash_mem_multiplier

velké stránky

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description 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
Výchozí hodnota try
Povolené hodnoty on,off,try
Typ parametru statický
Documentation huge_pages

Description

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

Použití velkých stránek paměti může nabídnout výhody výkonu, které účinně odlehčí zátěž procesoru:

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

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

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

Recommendations

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

Poznámky specifické pro Azure

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

logical_decoding_work_mem

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Nastaví maximální paměť, která se má použít pro logické dekódování.
Datový typ integer
Výchozí hodnota 65536
Povolené hodnoty 64-2147483647
Typ parametru dynamic
Documentation logical_decoding_work_mem

maintenance_work_mem

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

Description

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

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

Klíčové body

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

Poznámky specifické pro Azure

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

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

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

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

Velikost paměti maintenance_work_mem
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GB 332 800 KiB
48 GiB 367 616 KiB
64 GiB 392 192 KiB
80 GiB 410 624 KiB
128 GiB 450 560 KiB
160 GiB 468 992 KiB
192 GiB 484 352 KiB
256 GB 508 928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_připravené_transakce

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

maximální hloubka zásobníku

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

shared_buffers

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

Description

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

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

Poznámky specifické pro Azure

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

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

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

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

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

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

sdílený_typ_paměti

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Vybere implementaci sdílené paměti použitou pro hlavní oblast sdílené paměti.
Datový typ výčet
Výchozí hodnota mmap
Povolené hodnoty mmap
Typ parametru jen pro čtení
Documentation shared_memory_type

temp_buffers

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

pracovní paměť

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

Description

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 soukromém paměťovém prostoru pro jednotlivé relace nebo dotazy. Nastavením odpovídající work_mem velikosti můžete výrazně zlepšit efektivitu těchto operací a snížit potřebu zápisu dočasných dat na disk.

Klíčové body

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

Monitorování a úpravy work_mem

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

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

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

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

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

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

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

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

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

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

autovacuum_work_mem

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

dynamic_shared_memory_type

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Vybere použitou implementaci dynamické sdílené paměti.
Datový typ výčet
Výchozí hodnota posix
Povolené hodnoty posix
Typ parametru jen pro čtení
Documentation dynamický_typ_sdílené_paměti

hash_mem_multiplier

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Násobek work_mem, které se mají použít pro tabulky hash.
Datový typ numerické
Výchozí hodnota 1
Povolené hodnoty 1-1000
Typ parametru dynamic
Documentation hash_mem_multiplier

velké stránky

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description 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
Výchozí hodnota try
Povolené hodnoty on,off,try
Typ parametru statický
Documentation huge_pages

Description

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

Použití velkých stránek paměti může nabídnout výhody výkonu, které účinně odlehčí zátěž procesoru:

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

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

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

Recommendations

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

Poznámky specifické pro Azure

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

maintenance_work_mem

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

Description

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

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

Klíčové body

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

Poznámky specifické pro Azure

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

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

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

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

Velikost paměti maintenance_work_mem
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GB 332 800 KiB
48 GiB 367 616 KiB
64 GiB 392 192 KiB
80 GiB 410 624 KiB
128 GiB 450 560 KiB
160 GiB 468 992 KiB
192 GiB 484 352 KiB
256 GB 508 928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_připravené_transakce

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

maximální hloubka zásobníku

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

shared_buffers

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

Description

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

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

Poznámky specifické pro Azure

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

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

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

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

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

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

sdílený_typ_paměti

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Vybere implementaci sdílené paměti použitou pro hlavní oblast sdílené paměti.
Datový typ výčet
Výchozí hodnota mmap
Povolené hodnoty mmap
Typ parametru jen pro čtení
Documentation shared_memory_type

temp_buffers

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

pracovní paměť

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

Description

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 soukromém paměťovém prostoru pro jednotlivé relace nebo dotazy. Nastavením odpovídající work_mem velikosti můžete výrazně zlepšit efektivitu těchto operací a snížit potřebu zápisu dočasných dat na disk.

Klíčové body

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

Monitorování a úpravy work_mem

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

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

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

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

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

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

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

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

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

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

autovacuum_work_mem

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

dynamic_shared_memory_type

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description Vybere použitou implementaci dynamické sdílené paměti.
Datový typ výčet
Výchozí hodnota posix
Povolené hodnoty posix
Typ parametru jen pro čtení
Documentation dynamický_typ_sdílené_paměti

velké stránky

Vlastnost Hodnota
Kategorie Využití zdrojů / Paměť
Description 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
Výchozí hodnota try
Povolené hodnoty on,off,try
Typ parametru statický
Documentation huge_pages

Description

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

Použití velkých stránek paměti může nabídnout výhody výkonu, které účinně odlehčí zátěž procesoru:

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

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

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

Recommendations

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

Poznámky specifické pro Azure

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

maintenance_work_mem

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

Description

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

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

Klíčové body

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

Poznámky specifické pro Azure

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

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

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

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

Velikost paměti maintenance_work_mem
2 GiB 99 328 KiB
4 GiB 157 696 KiB
8 GiB 216 064 KiB
16 GiB 274 432 KiB
32 GB 332 800 KiB
48 GiB 367 616 KiB
64 GiB 392 192 KiB
80 GiB 410 624 KiB
128 GiB 450 560 KiB
160 GiB 468 992 KiB
192 GiB 484 352 KiB
256 GB 508 928 KiB
384 GiB 542 720 KiB
432 GiB 552 960 KiB
672 GiB 590 848 KiB

max_připravené_transakce

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

maximální hloubka zásobníku

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

shared_buffers

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

Description

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

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

Poznámky specifické pro Azure

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

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

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

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

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

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

temp_buffers

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

pracovní paměť

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

Description

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 soukromém paměťovém prostoru pro jednotlivé relace nebo dotazy. Nastavením odpovídající work_mem velikosti můžete výrazně zlepšit efektivitu těchto operací a snížit potřebu zápisu dočasných dat na disk.

Klíčové body

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

Monitorování a úpravy work_mem

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

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

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

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

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

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

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

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

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

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