Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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_pagesnastaveníTRYpro 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_memmůž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, žeVACUUMmá 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_memje součástí privátní paměti, kterou každá relace databáze používá. Tato paměť se liší od sdílené paměti, kteroushared_bufferspoužívá. -
Použití specifické pro dotazy: Ne všechny relace nebo dotazy používají
work_mem. Jednoduché dotazy jakoSELECT 1je nepravděpodobné, že by vyžadovalywork_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_memhodnoty pro daného uživatele.ALTER ROLEPomocí 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_memhodnoty na konkrétní úrovni funkce nebo procedury přínosné.ALTER FUNCTIONPomocí příkazu neboALTER PROCEDUREpříkazu přidělte těmto operacím konkrétně více paměti.Úroveň databáze: Změna
work_memna ú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_memhodnotu. 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ýšenouwork_memhodnotu.
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:
- Připojte se k databázi pomocí psql nebo preferovaného klienta PostgreSQL.
- Při zpracování v paměti nastavte počáteční
work_memhodnotu 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'. - Spusťte
EXPLAIN ANALYZEna problémový dotaz ve stejné relaci. - Zkontrolujte výstup pro
"Sort Method: quicksort Memory: xkB". Pokud to znamená"external merge Disk: xkB", zvyštework_memhodnotu přírůstkově a znovu otestujte, dokud"quicksort Memory"se nezobrazí. Objevení"quicksort Memory"signalizuje, že dotaz nyní pracuje v paměti. - 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_pagesnastaveníTRYpro 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_memmůž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, žeVACUUMmá 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_memje součástí privátní paměti, kterou každá relace databáze používá. Tato paměť se liší od sdílené paměti, kteroushared_bufferspoužívá. -
Použití specifické pro dotazy: Ne všechny relace nebo dotazy používají
work_mem. Jednoduché dotazy jakoSELECT 1je nepravděpodobné, že by vyžadovalywork_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_memhodnoty pro daného uživatele.ALTER ROLEPomocí 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_memhodnoty na konkrétní úrovni funkce nebo procedury přínosné.ALTER FUNCTIONPomocí příkazu neboALTER PROCEDUREpříkazu přidělte těmto operacím konkrétně více paměti.Úroveň databáze: Změna
work_memna ú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_memhodnotu. 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ýšenouwork_memhodnotu.
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:
- Připojte se k databázi pomocí psql nebo preferovaného klienta PostgreSQL.
- Při zpracování v paměti nastavte počáteční
work_memhodnotu 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'. - Spusťte
EXPLAIN ANALYZEna problémový dotaz ve stejné relaci. - Zkontrolujte výstup pro
"Sort Method: quicksort Memory: xkB". Pokud to znamená"external merge Disk: xkB", zvyštework_memhodnotu přírůstkově a znovu otestujte, dokud"quicksort Memory"se nezobrazí. Objevení"quicksort Memory"signalizuje, že dotaz nyní pracuje v paměti. - 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_pagesnastaveníTRYpro 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_memmůž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, žeVACUUMmá 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_memje součástí privátní paměti, kterou každá relace databáze používá. Tato paměť se liší od sdílené paměti, kteroushared_bufferspoužívá. -
Použití specifické pro dotazy: Ne všechny relace nebo dotazy používají
work_mem. Jednoduché dotazy jakoSELECT 1je nepravděpodobné, že by vyžadovalywork_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_memhodnoty pro daného uživatele.ALTER ROLEPomocí 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_memhodnoty na konkrétní úrovni funkce nebo procedury přínosné.ALTER FUNCTIONPomocí příkazu neboALTER PROCEDUREpříkazu přidělte těmto operacím konkrétně více paměti.Úroveň databáze: Změna
work_memna ú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_memhodnotu. 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ýšenouwork_memhodnotu.
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:
- Připojte se k databázi pomocí psql nebo preferovaného klienta PostgreSQL.
- Při zpracování v paměti nastavte počáteční
work_memhodnotu 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'. - Spusťte
EXPLAIN ANALYZEna problémový dotaz ve stejné relaci. - Zkontrolujte výstup pro
"Sort Method: quicksort Memory: xkB". Pokud to znamená"external merge Disk: xkB", zvyštework_memhodnotu přírůstkově a znovu otestujte, dokud"quicksort Memory"se nezobrazí. Objevení"quicksort Memory"signalizuje, že dotaz nyní pracuje v paměti. - 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_pagesnastaveníTRYpro 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_memmůž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, žeVACUUMmá 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_memje součástí privátní paměti, kterou každá relace databáze používá. Tato paměť se liší od sdílené paměti, kteroushared_bufferspoužívá. -
Použití specifické pro dotazy: Ne všechny relace nebo dotazy používají
work_mem. Jednoduché dotazy jakoSELECT 1je nepravděpodobné, že by vyžadovalywork_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_memhodnoty pro daného uživatele.ALTER ROLEPomocí 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_memhodnoty na konkrétní úrovni funkce nebo procedury přínosné.ALTER FUNCTIONPomocí příkazu neboALTER PROCEDUREpříkazu přidělte těmto operacím konkrétně více paměti.Úroveň databáze: Změna
work_memna ú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_memhodnotu. 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ýšenouwork_memhodnotu.
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:
- Připojte se k databázi pomocí psql nebo preferovaného klienta PostgreSQL.
- Při zpracování v paměti nastavte počáteční
work_memhodnotu 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'. - Spusťte
EXPLAIN ANALYZEna problémový dotaz ve stejné relaci. - Zkontrolujte výstup pro
"Sort Method: quicksort Memory: xkB". Pokud to znamená"external merge Disk: xkB", zvyštework_memhodnotu přírůstkově a znovu otestujte, dokud"quicksort Memory"se nezobrazí. Objevení"quicksort Memory"signalizuje, že dotaz nyní pracuje v paměti. - 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_pagesnastaveníTRYpro 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_memmůž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, žeVACUUMmá 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_memje součástí privátní paměti, kterou každá relace databáze používá. Tato paměť se liší od sdílené paměti, kteroushared_bufferspoužívá. -
Použití specifické pro dotazy: Ne všechny relace nebo dotazy používají
work_mem. Jednoduché dotazy jakoSELECT 1je nepravděpodobné, že by vyžadovalywork_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_memhodnoty pro daného uživatele.ALTER ROLEPomocí 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_memhodnoty na konkrétní úrovni funkce nebo procedury přínosné.ALTER FUNCTIONPomocí příkazu neboALTER PROCEDUREpříkazu přidělte těmto operacím konkrétně více paměti.Úroveň databáze: Změna
work_memna ú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_memhodnotu. 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ýšenouwork_memhodnotu.
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:
- Připojte se k databázi pomocí psql nebo preferovaného klienta PostgreSQL.
- Při zpracování v paměti nastavte počáteční
work_memhodnotu 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'. - Spusťte
EXPLAIN ANALYZEna problémový dotaz ve stejné relaci. - Zkontrolujte výstup pro
"Sort Method: quicksort Memory: xkB". Pokud to znamená"external merge Disk: xkB", zvyštework_memhodnotu přírůstkově a znovu otestujte, dokud"quicksort Memory"se nezobrazí. Objevení"quicksort Memory"signalizuje, že dotaz nyní pracuje v paměti. - 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_pagesnastaveníTRYpro 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_memmůž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, žeVACUUMmá 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_memje součástí privátní paměti, kterou každá relace databáze používá. Tato paměť se liší od sdílené paměti, kteroushared_bufferspoužívá. -
Použití specifické pro dotazy: Ne všechny relace nebo dotazy používají
work_mem. Jednoduché dotazy jakoSELECT 1je nepravděpodobné, že by vyžadovalywork_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_memhodnoty pro daného uživatele.ALTER ROLEPomocí 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_memhodnoty na konkrétní úrovni funkce nebo procedury přínosné.ALTER FUNCTIONPomocí příkazu neboALTER PROCEDUREpříkazu přidělte těmto operacím konkrétně více paměti.Úroveň databáze: Změna
work_memna ú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_memhodnotu. 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ýšenouwork_memhodnotu.
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:
- Připojte se k databázi pomocí psql nebo preferovaného klienta PostgreSQL.
- Při zpracování v paměti nastavte počáteční
work_memhodnotu 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'. - Spusťte
EXPLAIN ANALYZEna problémový dotaz ve stejné relaci. - Zkontrolujte výstup pro
"Sort Method: quicksort Memory: xkB". Pokud to znamená"external merge Disk: xkB", zvyštework_memhodnotu přírůstkově a znovu otestujte, dokud"quicksort Memory"se nezobrazí. Objevení"quicksort Memory"signalizuje, že dotaz nyní pracuje v paměti. - 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_pagesnastaveníTRYpro 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_memmůž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, žeVACUUMmá 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_memje součástí privátní paměti, kterou každá relace databáze používá. Tato paměť se liší od sdílené paměti, kteroushared_bufferspoužívá. -
Použití specifické pro dotazy: Ne všechny relace nebo dotazy používají
work_mem. Jednoduché dotazy jakoSELECT 1je nepravděpodobné, že by vyžadovalywork_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_memhodnoty pro daného uživatele.ALTER ROLEPomocí 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_memhodnoty na konkrétní úrovni funkce nebo procedury přínosné.ALTER FUNCTIONPomocí příkazu neboALTER PROCEDUREpříkazu přidělte těmto operacím konkrétně více paměti.Úroveň databáze: Změna
work_memna ú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_memhodnotu. 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ýšenouwork_memhodnotu.
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:
- Připojte se k databázi pomocí psql nebo preferovaného klienta PostgreSQL.
- Při zpracování v paměti nastavte počáteční
work_memhodnotu 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'. - Spusťte
EXPLAIN ANALYZEna problémový dotaz ve stejné relaci. - Zkontrolujte výstup pro
"Sort Method: quicksort Memory: xkB". Pokud to znamená"external merge Disk: xkB", zvyštework_memhodnotu přírůstkově a znovu otestujte, dokud"quicksort Memory"se nezobrazí. Objevení"quicksort Memory"signalizuje, že dotaz nyní pracuje v paměti. - 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_pagesnastaveníTRYpro 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_memmůž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, žeVACUUMmá 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_memje součástí privátní paměti, kterou každá relace databáze používá. Tato paměť se liší od sdílené paměti, kteroushared_bufferspoužívá. -
Použití specifické pro dotazy: Ne všechny relace nebo dotazy používají
work_mem. Jednoduché dotazy jakoSELECT 1je nepravděpodobné, že by vyžadovalywork_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_memhodnoty pro daného uživatele.ALTER ROLEPomocí 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_memhodnoty na konkrétní úrovni funkce nebo procedury přínosné.ALTER FUNCTIONPomocí příkazu neboALTER PROCEDUREpříkazu přidělte těmto operacím konkrétně více paměti.Úroveň databáze: Změna
work_memna ú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_memhodnotu. 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ýšenouwork_memhodnotu.
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:
- Připojte se k databázi pomocí psql nebo preferovaného klienta PostgreSQL.
- Při zpracování v paměti nastavte počáteční
work_memhodnotu 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'. - Spusťte
EXPLAIN ANALYZEna problémový dotaz ve stejné relaci. - Zkontrolujte výstup pro
"Sort Method: quicksort Memory: xkB". Pokud to znamená"external merge Disk: xkB", zvyštework_memhodnotu přírůstkově a znovu otestujte, dokud"quicksort Memory"se nezobrazí. Objevení"quicksort Memory"signalizuje, že dotaz nyní pracuje v paměti. - 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.