Dela via


Resursanvändning/minne

autovacuum_work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala minne som ska användas av varje autovacuum-arbetsprocess.
Datatyp integer
Standardvärde -1
Tillåtna värden -1-2097151
Parametertyp dynamisk
Dokumentation autovacuum_work_mem

dynamic_shared_memory_type

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Väljer den dynamiska implementering av delat minne som används.
Datatyp uppräkning
Standardvärde posix
Tillåtna värden posix
Parametertyp skrivskyddad
Dokumentation dynamic_shared_memory_type

hash_mem_multiplier

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Flera av work_mem som ska användas för hash-tabeller.
Datatyp numeric
Standardvärde 2
Tillåtna värden 1-1000
Parametertyp dynamisk
Dokumentation hash_mem_multiplier

huge_pages

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Aktiverar/inaktiverar användningen av stora minnessidor. Den här inställningen gäller inte för servrar som har mindre än 4 virtuella kärnor.
Datatyp uppräkning
Standardvärde try
Tillåtna värden on,off,try
Parametertyp static
Dokumentation huge_pages

beskrivning

Enorma sidor är en funktion som gör att minne kan hanteras i större block. Du kan vanligtvis hantera block på upp till 2 MB, till skillnad från standardsidorna på 4 KB.

Att använda stora sidor kan ge prestandafördelar som effektivt avlastar processorn:

  • De minskar de kostnader som är associerade med minneshanteringsuppgifter som färre TLB-fel (translation lookaside buffer).
  • De förkortar den tid som krävs för minneshantering.

Mer specifikt kan du i PostgreSQL endast använda stora sidor för det delade minnesområdet. En betydande del av det delade minnesområdet allokeras för delade buffertar.

En annan fördel är att stora sidor förhindrar att det delade minnesområdet växlas ut till disken, vilket ytterligare stabiliserar prestandan.

Rekommendationer

  • För servrar som har betydande minnesresurser bör du undvika att inaktivera stora sidor. Om du inaktiverar stora sidor kan prestandan försämras.
  • Om du börjar med en mindre server som inte stöder stora sidor, men du förväntar dig att skala upp till en server som gör det, behåll huge_pages inställningen TRY för sömlös övergång och optimala prestanda.

Azure-specifika anteckningar

För servrar med fyra eller fler virtuella kärnor allokeras enorma sidor automatiskt från det underliggande operativsystemet. Funktionen är inte tillgänglig för servrar med färre än fyra virtuella kärnor. Antalet stora sidor justeras automatiskt om några inställningar för delat minne ändras, inklusive ändringar i shared_buffers.

huge_page_size

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Storleken på den enorma sida som ska begäras.
Datatyp integer
Standardvärde 0
Tillåtna värden 0
Parametertyp skrivskyddad
Dokumentation huge_page_size

logical_decoding_work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala minne som ska användas för logisk avkodning.
Datatyp integer
Standardvärde 65536
Tillåtna värden 65536
Parametertyp skrivskyddad
Dokumentation logical_decoding_work_mem

maintenance_work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala minne som ska användas för underhållsåtgärder som VACUUM, Create Index.
Datatyp integer
Standardvärde Beror på resurser (virtuella kärnor, RAM-minne eller diskutrymme) som allokerats till servern.
Tillåtna värden 1024-2097151
Parametertyp dynamisk
Dokumentation maintenance_work_mem

beskrivning

maintenance_work_mem är en konfigurationsparameter i PostgreSQL. Den styr mängden minne som allokeras för underhållsåtgärder, till exempel VACUUM, CREATE INDEXoch ALTER TABLE. Till skillnad från work_mem, som påverkar minnesallokering för frågeåtgärder, maintenance_work_mem är reserverad för uppgifter som underhåller och optimerar databasstrukturen.

Huvudpunkter

  • Vakuumminneslock: Om du vill påskynda rensningen av döda tupplar genom att öka maintenance_work_membör du vara medveten om att det VACUUM har en inbyggd begränsning för insamling av döda tupplar. Den kan bara använda upp till 1 GB minne för den här processen.
  • Separation av minne för autovacuum: Du kan använda inställningen autovacuum_work_mem för att styra det minne som autovacuum-åtgärder använder oberoende av varandra. Den här inställningen fungerar som en delmängd av maintenance_work_mem. Du kan bestämma hur mycket minne autovacuum använder utan att påverka minnesallokeringen för andra underhållsaktiviteter och datadefinitionsåtgärder.

Azure-specifika anteckningar

Standardvärdet för maintenance_work_mem serverparametern beräknas när du etablerar instansen av en flexibel Azure Database for PostgreSQL-server baserat på det produktnamn som du väljer för dess beräkning. Eventuella efterföljande ändringar av produktval i beräkningen som stöder den flexibla servern påverkar inte standardvärdet för serverparametern för den instansen maintenance_work_mem .

Varje gång du ändrar den produkt som tilldelats en instans bör du också justera värdet för parametern maintenance_work_mem enligt värdena i följande formel.

Formeln som används för att beräkna värdet maintenance_work_mem för är (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Baserat på den tidigare formeln visar följande tabell de värden som den här serverparametern skulle ställas in på beroende på mängden minne som har etablerats:

Minnesstorlek maintenance_work_mem
2 GiB 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GiB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GiB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 KiB

max_prepared_transactions

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala antalet samtidiga förberedda transaktioner. När du kör en replikserver måste du ange samma eller högre värde för den här parametern än på den primära servern.
Datatyp integer
Standardvärde 0
Tillåtna värden 0-262143
Parametertyp static
Dokumentation max_prepared_transactions

max_stack_depth

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger maximalt stackdjup i kilobyte.
Datatyp integer
Standardvärde 2048
Tillåtna värden 2048
Parametertyp skrivskyddad
Dokumentation max_stack_depth

min_dynamic_shared_memory

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Mängden dynamiskt delat minne som reserverats vid start.
Datatyp integer
Standardvärde 0
Tillåtna värden 0
Parametertyp skrivskyddad
Dokumentation min_dynamic_shared_memory

shared_buffers

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger antalet buffertar för delat minne som används av servern. Enheten är 8 kB. Tillåtna värden ligger inom intervallet 10– 75 % av det tillgängliga minnet.
Datatyp integer
Standardvärde Beror på resurser (virtuella kärnor, RAM-minne eller diskutrymme) som allokerats till servern.
Tillåtna värden 16-1073741823
Parametertyp static
Dokumentation shared_buffers

beskrivning

Konfigurationsparametern shared_buffers avgör hur mycket systemminne som allokeras till PostgreSQL-databasen för buffring av data. Den fungerar som en centraliserad minnespool som är tillgänglig för alla databasprocesser.

När data behövs kontrollerar databasprocessen först den delade bufferten. Om nödvändiga data finns hämtas de snabbt och kringgår en mer tidskrävande diskläsning. Delade buffertar fungerar som mellanhand mellan databasprocesserna och disken och minskar effektivt antalet nödvändiga I/O-åtgärder.

Azure-specifika anteckningar

Standardvärdet för shared_buffers serverparametern beräknas när du etablerar instansen av en flexibel Azure Database for PostgreSQL-server baserat på det produktnamn som du väljer för dess beräkning. Eventuella efterföljande ändringar av produktval till den beräkning som stöder den flexibla servern påverkar inte standardvärdet för serverparametern för den instansen shared_buffers .

Varje gång du ändrar den produkt som tilldelats en instans bör du också justera värdet för parametern shared_buffers enligt värdena i följande formler.

För virtuella datorer med upp till 2 GiB minne är memoryGib * 16384formeln som används för att beräkna värdet shared_buffers för .

För virtuella datorer med mer än 2 GiB är memoryGib * 32768formeln som används för att beräkna värdet shared_buffers för .

Baserat på den tidigare formeln visar följande tabell de värden som den här serverparametern skulle ställas in på beroende på mängden minne som har etablerats:

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

shared_memory_type

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Väljer den implementering av delat minne som används för huvudregionen för delat minne.
Datatyp uppräkning
Standardvärde mmap
Tillåtna värden mmap
Parametertyp skrivskyddad
Dokumentation shared_memory_type

temp_buffers

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala antalet tillfälliga buffertar som används av varje databassession.
Datatyp integer
Standardvärde 1024
Tillåtna värden 100-1073741823
Parametertyp dynamisk
Dokumentation temp_buffers

vacuum_buffer_usage_limit

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger buffertpoolens storlek för VACUUM, ANALYZE och autovacuum.
Datatyp integer
Standardvärde 2048
Tillåtna värden 0-16777216
Parametertyp dynamisk
Dokumentation vacuum_buffer_usage_limit

work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger hur mycket minne som ska användas av interna sorteringsåtgärder och hash-tabeller innan du skriver till tillfälliga diskfiler.
Datatyp integer
Standardvärde 4096
Tillåtna värden 4096-2097151
Parametertyp dynamisk
Dokumentation work_mem

beskrivning

Parametern work_mem i PostgreSQL styr mängden minne som allokerats för vissa interna åtgärder i varje databassessions privata minnesområde. Exempel på dessa åtgärder är sortering och hashning.

Till skillnad från delade buffertar, som finns i det delade minnesområdet, work_mem allokeras i ett privat minnesutrymme per session eller per fråga. Genom att ange en lämplig work_mem storlek kan du avsevärt förbättra effektiviteten för dessa åtgärder och minska behovet av att skriva tillfälliga data till disk.

Huvudpunkter

  • Privat anslutningsminne: work_mem är en del av det privata minne som varje databassession använder. Det här minnet skiljer sig från det delade minnesområde som shared_buffers används.
  • Frågespecifik användning: Alla sessioner eller frågor använder work_meminte . Enkla frågor som SELECT 1 är osannolika att kräva work_mem. Komplexa frågor som omfattar åtgärder som sortering eller hashning kan dock förbruka ett eller flera segment av work_mem.
  • Parallella åtgärder: För frågor som sträcker sig över flera parallella serverdelar kan varje serverdel potentiellt använda ett eller flera segment av work_mem.

Övervaka och justera work_mem

Det är viktigt att kontinuerligt övervaka systemets prestanda och justera work_mem vid behov, främst om frågekörningstiderna relaterade till sorterings- eller hashåtgärder är långsamma. Här är sätt att övervaka prestanda med hjälp av verktyg som är tillgängliga i Azure Portal:

  • Insikt om frågeprestanda: Kontrollera fliken De vanligaste frågorna efter temporära filer för att identifiera frågor som genererar tillfälliga filer. Den här situationen tyder på ett potentiellt behov av att öka work_mem.
  • Felsökningsguider: Använd fliken Höga temporära filer i felsökningsguiderna för att identifiera problematiska frågor.
Detaljerad justering

När du hanterar parametern work_mem är det ofta mer effektivt att använda en detaljerad justeringsmetod i stället för att ange ett globalt värde. Den här metoden säkerställer att du allokerar minne på ett omdömesgillt sätt baserat på de specifika behoven hos processer och användare. Det minimerar också risken för problem med minnesbrist. Så här kan du gå till väga:

  • Användarnivå: Om en specifik användare främst är involverad i aggregerings- eller rapporteringsuppgifter, som är minnesintensiva, bör du överväga att anpassa värdet för den work_mem användaren. ALTER ROLE Använd kommandot för att förbättra prestandan för användarens åtgärder.

  • Funktions-/procedurnivå: Om specifika funktioner eller procedurer genererar betydande temporära filer kan det vara fördelaktigt att öka work_mem värdet på den specifika funktions- eller procedurnivån. ALTER FUNCTION Använd kommandot eller ALTER PROCEDURE för att specifikt allokera mer minne till dessa åtgärder.

  • Databasnivå: Ändra work_mem på databasnivå om endast specifika databaser genererar ett stort antal temporära filer.

  • Global nivå: Om en analys av systemet visar att de flesta frågor genererar små temporära filer, medan bara ett fåtal skapar stora filer, kan det vara klokt att öka work_mem värdet globalt. Den här åtgärden underlättar för de flesta frågor att bearbeta i minnet, så att du kan undvika diskbaserade åtgärder och förbättra effektiviteten. Var dock alltid försiktig och övervaka minnesanvändningen på servern för att säkerställa att den kan hantera det ökade work_mem värdet.

Fastställa det minsta work_mem värdet för sorteringsåtgärder

Om du vill hitta det minsta work_mem värdet för en specifik fråga, särskilt en som genererar tillfälliga diskfiler under sorteringsprocessen, börjar du med att överväga den tillfälliga filstorlek som genererades under frågekörningen. Om en fråga till exempel genererar en temporär fil på 20 MB:

  1. Anslut till databasen med hjälp av psql eller önskad PostgreSQL-klient.
  2. Ange ett initialt work_mem värde som är något högre än 20 MB för att ta hänsyn till ytterligare rubriker vid bearbetning i minnet. Använd ett kommando som: SET work_mem TO '25MB'.
  3. Kör EXPLAIN ANALYZE på den problematiska frågan i samma session.
  4. Granska utdata för "Sort Method: quicksort Memory: xkB". Om det anger "external merge Disk: xkB"höjer work_mem du värdet stegvis och testa igen tills "quicksort Memory" det visas. Utseendet på "quicksort Memory" signaler om att frågan nu fungerar i minnet.
  5. När du har fastställt värdet via den här metoden kan du använda det antingen globalt eller på mer detaljerade nivåer (enligt beskrivningen tidigare) för att passa dina driftbehov.

autovacuum_work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala minne som ska användas av varje autovacuum-arbetsprocess.
Datatyp integer
Standardvärde -1
Tillåtna värden -1-2097151
Parametertyp dynamisk
Dokumentation autovacuum_work_mem

dynamic_shared_memory_type

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Väljer den dynamiska implementering av delat minne som används.
Datatyp uppräkning
Standardvärde posix
Tillåtna värden posix
Parametertyp skrivskyddad
Dokumentation dynamic_shared_memory_type

hash_mem_multiplier

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Flera av work_mem som ska användas för hash-tabeller.
Datatyp numeric
Standardvärde 2
Tillåtna värden 1-1000
Parametertyp dynamisk
Dokumentation hash_mem_multiplier

huge_pages

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Aktiverar/inaktiverar användningen av stora minnessidor. Den här inställningen gäller inte för servrar som har mindre än 4 virtuella kärnor.
Datatyp uppräkning
Standardvärde try
Tillåtna värden on,off,try
Parametertyp static
Dokumentation huge_pages

beskrivning

Enorma sidor är en funktion som gör att minne kan hanteras i större block. Du kan vanligtvis hantera block på upp till 2 MB, till skillnad från standardsidorna på 4 KB.

Att använda stora sidor kan ge prestandafördelar som effektivt avlastar processorn:

  • De minskar de kostnader som är associerade med minneshanteringsuppgifter som färre TLB-fel (translation lookaside buffer).
  • De förkortar den tid som krävs för minneshantering.

Mer specifikt kan du i PostgreSQL endast använda stora sidor för det delade minnesområdet. En betydande del av det delade minnesområdet allokeras för delade buffertar.

En annan fördel är att stora sidor förhindrar att det delade minnesområdet växlas ut till disken, vilket ytterligare stabiliserar prestandan.

Rekommendationer

  • För servrar som har betydande minnesresurser bör du undvika att inaktivera stora sidor. Om du inaktiverar stora sidor kan prestandan försämras.
  • Om du börjar med en mindre server som inte stöder stora sidor, men du förväntar dig att skala upp till en server som gör det, behåll huge_pages inställningen TRY för sömlös övergång och optimala prestanda.

Azure-specifika anteckningar

För servrar med fyra eller fler virtuella kärnor allokeras enorma sidor automatiskt från det underliggande operativsystemet. Funktionen är inte tillgänglig för servrar med färre än fyra virtuella kärnor. Antalet stora sidor justeras automatiskt om några inställningar för delat minne ändras, inklusive ändringar i shared_buffers.

huge_page_size

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Storleken på den enorma sida som ska begäras.
Datatyp integer
Standardvärde 0
Tillåtna värden 0
Parametertyp skrivskyddad
Dokumentation huge_page_size

logical_decoding_work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala minne som ska användas för logisk avkodning.
Datatyp integer
Standardvärde 65536
Tillåtna värden 64-2147483647
Parametertyp dynamisk
Dokumentation logical_decoding_work_mem

maintenance_work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala minne som ska användas för underhållsåtgärder som VACUUM, Create Index.
Datatyp integer
Standardvärde Beror på resurser (virtuella kärnor, RAM-minne eller diskutrymme) som allokerats till servern.
Tillåtna värden 1024-2097151
Parametertyp dynamisk
Dokumentation maintenance_work_mem

beskrivning

maintenance_work_mem är en konfigurationsparameter i PostgreSQL. Den styr mängden minne som allokeras för underhållsåtgärder, till exempel VACUUM, CREATE INDEXoch ALTER TABLE. Till skillnad från work_mem, som påverkar minnesallokering för frågeåtgärder, maintenance_work_mem är reserverad för uppgifter som underhåller och optimerar databasstrukturen.

Huvudpunkter

  • Vakuumminneslock: Om du vill påskynda rensningen av döda tupplar genom att öka maintenance_work_membör du vara medveten om att det VACUUM har en inbyggd begränsning för insamling av döda tupplar. Den kan bara använda upp till 1 GB minne för den här processen.
  • Separation av minne för autovacuum: Du kan använda inställningen autovacuum_work_mem för att styra det minne som autovacuum-åtgärder använder oberoende av varandra. Den här inställningen fungerar som en delmängd av maintenance_work_mem. Du kan bestämma hur mycket minne autovacuum använder utan att påverka minnesallokeringen för andra underhållsaktiviteter och datadefinitionsåtgärder.

Azure-specifika anteckningar

Standardvärdet för maintenance_work_mem serverparametern beräknas när du etablerar instansen av en flexibel Azure Database for PostgreSQL-server baserat på det produktnamn som du väljer för dess beräkning. Eventuella efterföljande ändringar av produktval i beräkningen som stöder den flexibla servern påverkar inte standardvärdet för serverparametern för den instansen maintenance_work_mem .

Varje gång du ändrar den produkt som tilldelats en instans bör du också justera värdet för parametern maintenance_work_mem enligt värdena i följande formel.

Formeln som används för att beräkna värdet maintenance_work_mem för är (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Baserat på den tidigare formeln visar följande tabell de värden som den här serverparametern skulle ställas in på beroende på mängden minne som har etablerats:

Minnesstorlek maintenance_work_mem
2 GiB 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GiB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GiB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 KiB

max_prepared_transactions

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala antalet samtidiga förberedda transaktioner. När du kör en replikserver måste du ange samma eller högre värde för den här parametern än på den primära servern.
Datatyp integer
Standardvärde 0
Tillåtna värden 0-262143
Parametertyp static
Dokumentation max_prepared_transactions

max_stack_depth

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger maximalt stackdjup i kilobyte.
Datatyp integer
Standardvärde 2048
Tillåtna värden 2048
Parametertyp skrivskyddad
Dokumentation max_stack_depth

min_dynamic_shared_memory

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Mängden dynamiskt delat minne som reserverats vid start.
Datatyp integer
Standardvärde 0
Tillåtna värden 0
Parametertyp skrivskyddad
Dokumentation min_dynamic_shared_memory

shared_buffers

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger antalet buffertar för delat minne som används av servern. Enheten är 8 kB. Tillåtna värden ligger inom intervallet 10– 75 % av det tillgängliga minnet.
Datatyp integer
Standardvärde Beror på resurser (virtuella kärnor, RAM-minne eller diskutrymme) som allokerats till servern.
Tillåtna värden 16-1073741823
Parametertyp static
Dokumentation shared_buffers

beskrivning

Konfigurationsparametern shared_buffers avgör hur mycket systemminne som allokeras till PostgreSQL-databasen för buffring av data. Den fungerar som en centraliserad minnespool som är tillgänglig för alla databasprocesser.

När data behövs kontrollerar databasprocessen först den delade bufferten. Om nödvändiga data finns hämtas de snabbt och kringgår en mer tidskrävande diskläsning. Delade buffertar fungerar som mellanhand mellan databasprocesserna och disken och minskar effektivt antalet nödvändiga I/O-åtgärder.

Azure-specifika anteckningar

Standardvärdet för shared_buffers serverparametern beräknas när du etablerar instansen av en flexibel Azure Database for PostgreSQL-server baserat på det produktnamn som du väljer för dess beräkning. Eventuella efterföljande ändringar av produktval till den beräkning som stöder den flexibla servern påverkar inte standardvärdet för serverparametern för den instansen shared_buffers .

Varje gång du ändrar den produkt som tilldelats en instans bör du också justera värdet för parametern shared_buffers enligt värdena i följande formler.

För virtuella datorer med upp till 2 GiB minne är memoryGib * 16384formeln som används för att beräkna värdet shared_buffers för .

För virtuella datorer med mer än 2 GiB är memoryGib * 32768formeln som används för att beräkna värdet shared_buffers för .

Baserat på den tidigare formeln visar följande tabell de värden som den här serverparametern skulle ställas in på beroende på mängden minne som har etablerats:

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

shared_memory_type

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Väljer den implementering av delat minne som används för huvudregionen för delat minne.
Datatyp uppräkning
Standardvärde mmap
Tillåtna värden mmap
Parametertyp skrivskyddad
Dokumentation shared_memory_type

temp_buffers

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala antalet tillfälliga buffertar som används av varje databassession.
Datatyp integer
Standardvärde 1024
Tillåtna värden 100-1073741823
Parametertyp dynamisk
Dokumentation temp_buffers

vacuum_buffer_usage_limit

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger buffertpoolens storlek för VACUUM, ANALYZE och autovacuum.
Datatyp integer
Standardvärde 256
Tillåtna värden 0-16777216
Parametertyp dynamisk
Dokumentation vacuum_buffer_usage_limit

work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger hur mycket minne som ska användas av interna sorteringsåtgärder och hash-tabeller innan du skriver till tillfälliga diskfiler.
Datatyp integer
Standardvärde 4096
Tillåtna värden 4096-2097151
Parametertyp dynamisk
Dokumentation work_mem

beskrivning

Parametern work_mem i PostgreSQL styr mängden minne som allokerats för vissa interna åtgärder i varje databassessions privata minnesområde. Exempel på dessa åtgärder är sortering och hashning.

Till skillnad från delade buffertar, som finns i det delade minnesområdet, work_mem allokeras i ett privat minnesutrymme per session eller per fråga. Genom att ange en lämplig work_mem storlek kan du avsevärt förbättra effektiviteten för dessa åtgärder och minska behovet av att skriva tillfälliga data till disk.

Huvudpunkter

  • Privat anslutningsminne: work_mem är en del av det privata minne som varje databassession använder. Det här minnet skiljer sig från det delade minnesområde som shared_buffers används.
  • Frågespecifik användning: Alla sessioner eller frågor använder work_meminte . Enkla frågor som SELECT 1 är osannolika att kräva work_mem. Komplexa frågor som omfattar åtgärder som sortering eller hashning kan dock förbruka ett eller flera segment av work_mem.
  • Parallella åtgärder: För frågor som sträcker sig över flera parallella serverdelar kan varje serverdel potentiellt använda ett eller flera segment av work_mem.

Övervaka och justera work_mem

Det är viktigt att kontinuerligt övervaka systemets prestanda och justera work_mem vid behov, främst om frågekörningstiderna relaterade till sorterings- eller hashåtgärder är långsamma. Här är sätt att övervaka prestanda med hjälp av verktyg som är tillgängliga i Azure Portal:

  • Insikt om frågeprestanda: Kontrollera fliken De vanligaste frågorna efter temporära filer för att identifiera frågor som genererar tillfälliga filer. Den här situationen tyder på ett potentiellt behov av att öka work_mem.
  • Felsökningsguider: Använd fliken Höga temporära filer i felsökningsguiderna för att identifiera problematiska frågor.
Detaljerad justering

När du hanterar parametern work_mem är det ofta mer effektivt att använda en detaljerad justeringsmetod i stället för att ange ett globalt värde. Den här metoden säkerställer att du allokerar minne på ett omdömesgillt sätt baserat på de specifika behoven hos processer och användare. Det minimerar också risken för problem med minnesbrist. Så här kan du gå till väga:

  • Användarnivå: Om en specifik användare främst är involverad i aggregerings- eller rapporteringsuppgifter, som är minnesintensiva, bör du överväga att anpassa värdet för den work_mem användaren. ALTER ROLE Använd kommandot för att förbättra prestandan för användarens åtgärder.

  • Funktions-/procedurnivå: Om specifika funktioner eller procedurer genererar betydande temporära filer kan det vara fördelaktigt att öka work_mem värdet på den specifika funktions- eller procedurnivån. ALTER FUNCTION Använd kommandot eller ALTER PROCEDURE för att specifikt allokera mer minne till dessa åtgärder.

  • Databasnivå: Ändra work_mem på databasnivå om endast specifika databaser genererar ett stort antal temporära filer.

  • Global nivå: Om en analys av systemet visar att de flesta frågor genererar små temporära filer, medan bara ett fåtal skapar stora filer, kan det vara klokt att öka work_mem värdet globalt. Den här åtgärden underlättar för de flesta frågor att bearbeta i minnet, så att du kan undvika diskbaserade åtgärder och förbättra effektiviteten. Var dock alltid försiktig och övervaka minnesanvändningen på servern för att säkerställa att den kan hantera det ökade work_mem värdet.

Fastställa det minsta work_mem värdet för sorteringsåtgärder

Om du vill hitta det minsta work_mem värdet för en specifik fråga, särskilt en som genererar tillfälliga diskfiler under sorteringsprocessen, börjar du med att överväga den tillfälliga filstorlek som genererades under frågekörningen. Om en fråga till exempel genererar en temporär fil på 20 MB:

  1. Anslut till databasen med hjälp av psql eller önskad PostgreSQL-klient.
  2. Ange ett initialt work_mem värde som är något högre än 20 MB för att ta hänsyn till ytterligare rubriker vid bearbetning i minnet. Använd ett kommando som: SET work_mem TO '25MB'.
  3. Kör EXPLAIN ANALYZE på den problematiska frågan i samma session.
  4. Granska utdata för "Sort Method: quicksort Memory: xkB". Om det anger "external merge Disk: xkB"höjer work_mem du värdet stegvis och testa igen tills "quicksort Memory" det visas. Utseendet på "quicksort Memory" signaler om att frågan nu fungerar i minnet.
  5. När du har fastställt värdet via den här metoden kan du använda det antingen globalt eller på mer detaljerade nivåer (enligt beskrivningen tidigare) för att passa dina driftbehov.

autovacuum_work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala minne som ska användas av varje autovacuum-arbetsprocess.
Datatyp integer
Standardvärde -1
Tillåtna värden -1-2097151
Parametertyp dynamisk
Dokumentation autovacuum_work_mem

dynamic_shared_memory_type

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Väljer den dynamiska implementering av delat minne som används.
Datatyp uppräkning
Standardvärde posix
Tillåtna värden posix
Parametertyp skrivskyddad
Dokumentation dynamic_shared_memory_type

hash_mem_multiplier

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Flera av work_mem som ska användas för hash-tabeller.
Datatyp numeric
Standardvärde 2
Tillåtna värden 1-1000
Parametertyp dynamisk
Dokumentation hash_mem_multiplier

huge_pages

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Aktiverar/inaktiverar användningen av stora minnessidor. Den här inställningen gäller inte för servrar som har mindre än 4 virtuella kärnor.
Datatyp uppräkning
Standardvärde try
Tillåtna värden on,off,try
Parametertyp static
Dokumentation huge_pages

beskrivning

Enorma sidor är en funktion som gör att minne kan hanteras i större block. Du kan vanligtvis hantera block på upp till 2 MB, till skillnad från standardsidorna på 4 KB.

Att använda stora sidor kan ge prestandafördelar som effektivt avlastar processorn:

  • De minskar de kostnader som är associerade med minneshanteringsuppgifter som färre TLB-fel (translation lookaside buffer).
  • De förkortar den tid som krävs för minneshantering.

Mer specifikt kan du i PostgreSQL endast använda stora sidor för det delade minnesområdet. En betydande del av det delade minnesområdet allokeras för delade buffertar.

En annan fördel är att stora sidor förhindrar att det delade minnesområdet växlas ut till disken, vilket ytterligare stabiliserar prestandan.

Rekommendationer

  • För servrar som har betydande minnesresurser bör du undvika att inaktivera stora sidor. Om du inaktiverar stora sidor kan prestandan försämras.
  • Om du börjar med en mindre server som inte stöder stora sidor, men du förväntar dig att skala upp till en server som gör det, behåll huge_pages inställningen TRY för sömlös övergång och optimala prestanda.

Azure-specifika anteckningar

För servrar med fyra eller fler virtuella kärnor allokeras enorma sidor automatiskt från det underliggande operativsystemet. Funktionen är inte tillgänglig för servrar med färre än fyra virtuella kärnor. Antalet stora sidor justeras automatiskt om några inställningar för delat minne ändras, inklusive ändringar i shared_buffers.

huge_page_size

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Storleken på den enorma sida som ska begäras.
Datatyp integer
Standardvärde 0
Tillåtna värden 0
Parametertyp skrivskyddad
Dokumentation huge_page_size

logical_decoding_work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala minne som ska användas för logisk avkodning.
Datatyp integer
Standardvärde 65536
Tillåtna värden 64-2147483647
Parametertyp dynamisk
Dokumentation logical_decoding_work_mem

maintenance_work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala minne som ska användas för underhållsåtgärder som VACUUM, Create Index.
Datatyp integer
Standardvärde Beror på resurser (virtuella kärnor, RAM-minne eller diskutrymme) som allokerats till servern.
Tillåtna värden 1024-2097151
Parametertyp dynamisk
Dokumentation maintenance_work_mem

beskrivning

maintenance_work_mem är en konfigurationsparameter i PostgreSQL. Den styr mängden minne som allokeras för underhållsåtgärder, till exempel VACUUM, CREATE INDEXoch ALTER TABLE. Till skillnad från work_mem, som påverkar minnesallokering för frågeåtgärder, maintenance_work_mem är reserverad för uppgifter som underhåller och optimerar databasstrukturen.

Huvudpunkter

  • Vakuumminneslock: Om du vill påskynda rensningen av döda tupplar genom att öka maintenance_work_membör du vara medveten om att det VACUUM har en inbyggd begränsning för insamling av döda tupplar. Den kan bara använda upp till 1 GB minne för den här processen.
  • Separation av minne för autovacuum: Du kan använda inställningen autovacuum_work_mem för att styra det minne som autovacuum-åtgärder använder oberoende av varandra. Den här inställningen fungerar som en delmängd av maintenance_work_mem. Du kan bestämma hur mycket minne autovacuum använder utan att påverka minnesallokeringen för andra underhållsaktiviteter och datadefinitionsåtgärder.

Azure-specifika anteckningar

Standardvärdet för maintenance_work_mem serverparametern beräknas när du etablerar instansen av en flexibel Azure Database for PostgreSQL-server baserat på det produktnamn som du väljer för dess beräkning. Eventuella efterföljande ändringar av produktval i beräkningen som stöder den flexibla servern påverkar inte standardvärdet för serverparametern för den instansen maintenance_work_mem .

Varje gång du ändrar den produkt som tilldelats en instans bör du också justera värdet för parametern maintenance_work_mem enligt värdena i följande formel.

Formeln som används för att beräkna värdet maintenance_work_mem för är (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Baserat på den tidigare formeln visar följande tabell de värden som den här serverparametern skulle ställas in på beroende på mängden minne som har etablerats:

Minnesstorlek maintenance_work_mem
2 GiB 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GiB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GiB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 KiB

max_prepared_transactions

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala antalet samtidiga förberedda transaktioner. När du kör en replikserver måste du ange samma eller högre värde för den här parametern än på den primära servern.
Datatyp integer
Standardvärde 0
Tillåtna värden 0-262143
Parametertyp static
Dokumentation max_prepared_transactions

max_stack_depth

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger maximalt stackdjup i kilobyte.
Datatyp integer
Standardvärde 2048
Tillåtna värden 2048
Parametertyp skrivskyddad
Dokumentation max_stack_depth

min_dynamic_shared_memory

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Mängden dynamiskt delat minne som reserverats vid start.
Datatyp integer
Standardvärde 0
Tillåtna värden 0
Parametertyp skrivskyddad
Dokumentation min_dynamic_shared_memory

shared_buffers

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger antalet buffertar för delat minne som används av servern. Enheten är 8 kB. Tillåtna värden ligger inom intervallet 10– 75 % av det tillgängliga minnet.
Datatyp integer
Standardvärde Beror på resurser (virtuella kärnor, RAM-minne eller diskutrymme) som allokerats till servern.
Tillåtna värden 16-1073741823
Parametertyp static
Dokumentation shared_buffers

beskrivning

Konfigurationsparametern shared_buffers avgör hur mycket systemminne som allokeras till PostgreSQL-databasen för buffring av data. Den fungerar som en centraliserad minnespool som är tillgänglig för alla databasprocesser.

När data behövs kontrollerar databasprocessen först den delade bufferten. Om nödvändiga data finns hämtas de snabbt och kringgår en mer tidskrävande diskläsning. Delade buffertar fungerar som mellanhand mellan databasprocesserna och disken och minskar effektivt antalet nödvändiga I/O-åtgärder.

Azure-specifika anteckningar

Standardvärdet för shared_buffers serverparametern beräknas när du etablerar instansen av en flexibel Azure Database for PostgreSQL-server baserat på det produktnamn som du väljer för dess beräkning. Eventuella efterföljande ändringar av produktval till den beräkning som stöder den flexibla servern påverkar inte standardvärdet för serverparametern för den instansen shared_buffers .

Varje gång du ändrar den produkt som tilldelats en instans bör du också justera värdet för parametern shared_buffers enligt värdena i följande formler.

För virtuella datorer med upp till 2 GiB minne är memoryGib * 16384formeln som används för att beräkna värdet shared_buffers för .

För virtuella datorer med mer än 2 GiB är memoryGib * 32768formeln som används för att beräkna värdet shared_buffers för .

Baserat på den tidigare formeln visar följande tabell de värden som den här serverparametern skulle ställas in på beroende på mängden minne som har etablerats:

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

shared_memory_type

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Väljer den implementering av delat minne som används för huvudregionen för delat minne.
Datatyp uppräkning
Standardvärde mmap
Tillåtna värden mmap
Parametertyp skrivskyddad
Dokumentation shared_memory_type

temp_buffers

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala antalet tillfälliga buffertar som används av varje databassession.
Datatyp integer
Standardvärde 1024
Tillåtna värden 100-1073741823
Parametertyp dynamisk
Dokumentation temp_buffers

work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger hur mycket minne som ska användas av interna sorteringsåtgärder och hash-tabeller innan du skriver till tillfälliga diskfiler.
Datatyp integer
Standardvärde 4096
Tillåtna värden 4096-2097151
Parametertyp dynamisk
Dokumentation work_mem

beskrivning

Parametern work_mem i PostgreSQL styr mängden minne som allokerats för vissa interna åtgärder i varje databassessions privata minnesområde. Exempel på dessa åtgärder är sortering och hashning.

Till skillnad från delade buffertar, som finns i det delade minnesområdet, work_mem allokeras i ett privat minnesutrymme per session eller per fråga. Genom att ange en lämplig work_mem storlek kan du avsevärt förbättra effektiviteten för dessa åtgärder och minska behovet av att skriva tillfälliga data till disk.

Huvudpunkter

  • Privat anslutningsminne: work_mem är en del av det privata minne som varje databassession använder. Det här minnet skiljer sig från det delade minnesområde som shared_buffers används.
  • Frågespecifik användning: Alla sessioner eller frågor använder work_meminte . Enkla frågor som SELECT 1 är osannolika att kräva work_mem. Komplexa frågor som omfattar åtgärder som sortering eller hashning kan dock förbruka ett eller flera segment av work_mem.
  • Parallella åtgärder: För frågor som sträcker sig över flera parallella serverdelar kan varje serverdel potentiellt använda ett eller flera segment av work_mem.

Övervaka och justera work_mem

Det är viktigt att kontinuerligt övervaka systemets prestanda och justera work_mem vid behov, främst om frågekörningstiderna relaterade till sorterings- eller hashåtgärder är långsamma. Här är sätt att övervaka prestanda med hjälp av verktyg som är tillgängliga i Azure Portal:

  • Insikt om frågeprestanda: Kontrollera fliken De vanligaste frågorna efter temporära filer för att identifiera frågor som genererar tillfälliga filer. Den här situationen tyder på ett potentiellt behov av att öka work_mem.
  • Felsökningsguider: Använd fliken Höga temporära filer i felsökningsguiderna för att identifiera problematiska frågor.
Detaljerad justering

När du hanterar parametern work_mem är det ofta mer effektivt att använda en detaljerad justeringsmetod i stället för att ange ett globalt värde. Den här metoden säkerställer att du allokerar minne på ett omdömesgillt sätt baserat på de specifika behoven hos processer och användare. Det minimerar också risken för problem med minnesbrist. Så här kan du gå till väga:

  • Användarnivå: Om en specifik användare främst är involverad i aggregerings- eller rapporteringsuppgifter, som är minnesintensiva, bör du överväga att anpassa värdet för den work_mem användaren. ALTER ROLE Använd kommandot för att förbättra prestandan för användarens åtgärder.

  • Funktions-/procedurnivå: Om specifika funktioner eller procedurer genererar betydande temporära filer kan det vara fördelaktigt att öka work_mem värdet på den specifika funktions- eller procedurnivån. ALTER FUNCTION Använd kommandot eller ALTER PROCEDURE för att specifikt allokera mer minne till dessa åtgärder.

  • Databasnivå: Ändra work_mem på databasnivå om endast specifika databaser genererar ett stort antal temporära filer.

  • Global nivå: Om en analys av systemet visar att de flesta frågor genererar små temporära filer, medan bara ett fåtal skapar stora filer, kan det vara klokt att öka work_mem värdet globalt. Den här åtgärden underlättar för de flesta frågor att bearbeta i minnet, så att du kan undvika diskbaserade åtgärder och förbättra effektiviteten. Var dock alltid försiktig och övervaka minnesanvändningen på servern för att säkerställa att den kan hantera det ökade work_mem värdet.

Fastställa det minsta work_mem värdet för sorteringsåtgärder

Om du vill hitta det minsta work_mem värdet för en specifik fråga, särskilt en som genererar tillfälliga diskfiler under sorteringsprocessen, börjar du med att överväga den tillfälliga filstorlek som genererades under frågekörningen. Om en fråga till exempel genererar en temporär fil på 20 MB:

  1. Anslut till databasen med hjälp av psql eller önskad PostgreSQL-klient.
  2. Ange ett initialt work_mem värde som är något högre än 20 MB för att ta hänsyn till ytterligare rubriker vid bearbetning i minnet. Använd ett kommando som: SET work_mem TO '25MB'.
  3. Kör EXPLAIN ANALYZE på den problematiska frågan i samma session.
  4. Granska utdata för "Sort Method: quicksort Memory: xkB". Om det anger "external merge Disk: xkB"höjer work_mem du värdet stegvis och testa igen tills "quicksort Memory" det visas. Utseendet på "quicksort Memory" signaler om att frågan nu fungerar i minnet.
  5. När du har fastställt värdet via den här metoden kan du använda det antingen globalt eller på mer detaljerade nivåer (enligt beskrivningen tidigare) för att passa dina driftbehov.

autovacuum_work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala minne som ska användas av varje autovacuum-arbetsprocess.
Datatyp integer
Standardvärde -1
Tillåtna värden -1-2097151
Parametertyp dynamisk
Dokumentation autovacuum_work_mem

dynamic_shared_memory_type

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Väljer den dynamiska implementering av delat minne som används.
Datatyp uppräkning
Standardvärde posix
Tillåtna värden posix
Parametertyp skrivskyddad
Dokumentation dynamic_shared_memory_type

hash_mem_multiplier

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Flera av work_mem som ska användas för hash-tabeller.
Datatyp numeric
Standardvärde 1
Tillåtna värden 1-1000
Parametertyp dynamisk
Dokumentation hash_mem_multiplier

huge_pages

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Aktiverar/inaktiverar användningen av stora minnessidor. Den här inställningen gäller inte för servrar som har mindre än 4 virtuella kärnor.
Datatyp uppräkning
Standardvärde try
Tillåtna värden on,off,try
Parametertyp static
Dokumentation huge_pages

beskrivning

Enorma sidor är en funktion som gör att minne kan hanteras i större block. Du kan vanligtvis hantera block på upp till 2 MB, till skillnad från standardsidorna på 4 KB.

Att använda stora sidor kan ge prestandafördelar som effektivt avlastar processorn:

  • De minskar de kostnader som är associerade med minneshanteringsuppgifter som färre TLB-fel (translation lookaside buffer).
  • De förkortar den tid som krävs för minneshantering.

Mer specifikt kan du i PostgreSQL endast använda stora sidor för det delade minnesområdet. En betydande del av det delade minnesområdet allokeras för delade buffertar.

En annan fördel är att stora sidor förhindrar att det delade minnesområdet växlas ut till disken, vilket ytterligare stabiliserar prestandan.

Rekommendationer

  • För servrar som har betydande minnesresurser bör du undvika att inaktivera stora sidor. Om du inaktiverar stora sidor kan prestandan försämras.
  • Om du börjar med en mindre server som inte stöder stora sidor, men du förväntar dig att skala upp till en server som gör det, behåll huge_pages inställningen TRY för sömlös övergång och optimala prestanda.

Azure-specifika anteckningar

För servrar med fyra eller fler virtuella kärnor allokeras enorma sidor automatiskt från det underliggande operativsystemet. Funktionen är inte tillgänglig för servrar med färre än fyra virtuella kärnor. Antalet stora sidor justeras automatiskt om några inställningar för delat minne ändras, inklusive ändringar i shared_buffers.

huge_page_size

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Storleken på den enorma sida som ska begäras.
Datatyp integer
Standardvärde 0
Tillåtna värden 0
Parametertyp skrivskyddad
Dokumentation huge_page_size

logical_decoding_work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala minne som ska användas för logisk avkodning.
Datatyp integer
Standardvärde 65536
Tillåtna värden 64-2147483647
Parametertyp dynamisk
Dokumentation logical_decoding_work_mem

maintenance_work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala minne som ska användas för underhållsåtgärder som VACUUM, Create Index.
Datatyp integer
Standardvärde Beror på resurser (virtuella kärnor, RAM-minne eller diskutrymme) som allokerats till servern.
Tillåtna värden 1024-2097151
Parametertyp dynamisk
Dokumentation maintenance_work_mem

beskrivning

maintenance_work_mem är en konfigurationsparameter i PostgreSQL. Den styr mängden minne som allokeras för underhållsåtgärder, till exempel VACUUM, CREATE INDEXoch ALTER TABLE. Till skillnad från work_mem, som påverkar minnesallokering för frågeåtgärder, maintenance_work_mem är reserverad för uppgifter som underhåller och optimerar databasstrukturen.

Huvudpunkter

  • Vakuumminneslock: Om du vill påskynda rensningen av döda tupplar genom att öka maintenance_work_membör du vara medveten om att det VACUUM har en inbyggd begränsning för insamling av döda tupplar. Den kan bara använda upp till 1 GB minne för den här processen.
  • Separation av minne för autovacuum: Du kan använda inställningen autovacuum_work_mem för att styra det minne som autovacuum-åtgärder använder oberoende av varandra. Den här inställningen fungerar som en delmängd av maintenance_work_mem. Du kan bestämma hur mycket minne autovacuum använder utan att påverka minnesallokeringen för andra underhållsaktiviteter och datadefinitionsåtgärder.

Azure-specifika anteckningar

Standardvärdet för maintenance_work_mem serverparametern beräknas när du etablerar instansen av en flexibel Azure Database for PostgreSQL-server baserat på det produktnamn som du väljer för dess beräkning. Eventuella efterföljande ändringar av produktval i beräkningen som stöder den flexibla servern påverkar inte standardvärdet för serverparametern för den instansen maintenance_work_mem .

Varje gång du ändrar den produkt som tilldelats en instans bör du också justera värdet för parametern maintenance_work_mem enligt värdena i följande formel.

Formeln som används för att beräkna värdet maintenance_work_mem för är (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Baserat på den tidigare formeln visar följande tabell de värden som den här serverparametern skulle ställas in på beroende på mängden minne som har etablerats:

Minnesstorlek maintenance_work_mem
2 GiB 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GiB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GiB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 KiB

max_prepared_transactions

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala antalet samtidiga förberedda transaktioner. När du kör en replikserver måste du ange samma eller högre värde för den här parametern än på den primära servern.
Datatyp integer
Standardvärde 0
Tillåtna värden 0-262143
Parametertyp static
Dokumentation max_prepared_transactions

max_stack_depth

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger maximalt stackdjup i kilobyte.
Datatyp integer
Standardvärde 2048
Tillåtna värden 2048
Parametertyp skrivskyddad
Dokumentation max_stack_depth

min_dynamic_shared_memory

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Mängden dynamiskt delat minne som reserverats vid start.
Datatyp integer
Standardvärde 0
Tillåtna värden 0
Parametertyp skrivskyddad
Dokumentation min_dynamic_shared_memory

shared_buffers

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger antalet buffertar för delat minne som används av servern. Enheten är 8 kB. Tillåtna värden ligger inom intervallet 10– 75 % av det tillgängliga minnet.
Datatyp integer
Standardvärde Beror på resurser (virtuella kärnor, RAM-minne eller diskutrymme) som allokerats till servern.
Tillåtna värden 16-1073741823
Parametertyp static
Dokumentation shared_buffers

beskrivning

Konfigurationsparametern shared_buffers avgör hur mycket systemminne som allokeras till PostgreSQL-databasen för buffring av data. Den fungerar som en centraliserad minnespool som är tillgänglig för alla databasprocesser.

När data behövs kontrollerar databasprocessen först den delade bufferten. Om nödvändiga data finns hämtas de snabbt och kringgår en mer tidskrävande diskläsning. Delade buffertar fungerar som mellanhand mellan databasprocesserna och disken och minskar effektivt antalet nödvändiga I/O-åtgärder.

Azure-specifika anteckningar

Standardvärdet för shared_buffers serverparametern beräknas när du etablerar instansen av en flexibel Azure Database for PostgreSQL-server baserat på det produktnamn som du väljer för dess beräkning. Eventuella efterföljande ändringar av produktval till den beräkning som stöder den flexibla servern påverkar inte standardvärdet för serverparametern för den instansen shared_buffers .

Varje gång du ändrar den produkt som tilldelats en instans bör du också justera värdet för parametern shared_buffers enligt värdena i följande formler.

För virtuella datorer med upp till 2 GiB minne är memoryGib * 16384formeln som används för att beräkna värdet shared_buffers för .

För virtuella datorer med mer än 2 GiB är memoryGib * 32768formeln som används för att beräkna värdet shared_buffers för .

Baserat på den tidigare formeln visar följande tabell de värden som den här serverparametern skulle ställas in på beroende på mängden minne som har etablerats:

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

shared_memory_type

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Väljer den implementering av delat minne som används för huvudregionen för delat minne.
Datatyp uppräkning
Standardvärde mmap
Tillåtna värden mmap
Parametertyp skrivskyddad
Dokumentation shared_memory_type

temp_buffers

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala antalet tillfälliga buffertar som används av varje databassession.
Datatyp integer
Standardvärde 1024
Tillåtna värden 100-1073741823
Parametertyp dynamisk
Dokumentation temp_buffers

work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger hur mycket minne som ska användas av interna sorteringsåtgärder och hash-tabeller innan du skriver till tillfälliga diskfiler.
Datatyp integer
Standardvärde 4096
Tillåtna värden 4096-2097151
Parametertyp dynamisk
Dokumentation work_mem

beskrivning

Parametern work_mem i PostgreSQL styr mängden minne som allokerats för vissa interna åtgärder i varje databassessions privata minnesområde. Exempel på dessa åtgärder är sortering och hashning.

Till skillnad från delade buffertar, som finns i det delade minnesområdet, work_mem allokeras i ett privat minnesutrymme per session eller per fråga. Genom att ange en lämplig work_mem storlek kan du avsevärt förbättra effektiviteten för dessa åtgärder och minska behovet av att skriva tillfälliga data till disk.

Huvudpunkter

  • Privat anslutningsminne: work_mem är en del av det privata minne som varje databassession använder. Det här minnet skiljer sig från det delade minnesområde som shared_buffers används.
  • Frågespecifik användning: Alla sessioner eller frågor använder work_meminte . Enkla frågor som SELECT 1 är osannolika att kräva work_mem. Komplexa frågor som omfattar åtgärder som sortering eller hashning kan dock förbruka ett eller flera segment av work_mem.
  • Parallella åtgärder: För frågor som sträcker sig över flera parallella serverdelar kan varje serverdel potentiellt använda ett eller flera segment av work_mem.

Övervaka och justera work_mem

Det är viktigt att kontinuerligt övervaka systemets prestanda och justera work_mem vid behov, främst om frågekörningstiderna relaterade till sorterings- eller hashåtgärder är långsamma. Här är sätt att övervaka prestanda med hjälp av verktyg som är tillgängliga i Azure Portal:

  • Insikt om frågeprestanda: Kontrollera fliken De vanligaste frågorna efter temporära filer för att identifiera frågor som genererar tillfälliga filer. Den här situationen tyder på ett potentiellt behov av att öka work_mem.
  • Felsökningsguider: Använd fliken Höga temporära filer i felsökningsguiderna för att identifiera problematiska frågor.
Detaljerad justering

När du hanterar parametern work_mem är det ofta mer effektivt att använda en detaljerad justeringsmetod i stället för att ange ett globalt värde. Den här metoden säkerställer att du allokerar minne på ett omdömesgillt sätt baserat på de specifika behoven hos processer och användare. Det minimerar också risken för problem med minnesbrist. Så här kan du gå till väga:

  • Användarnivå: Om en specifik användare främst är involverad i aggregerings- eller rapporteringsuppgifter, som är minnesintensiva, bör du överväga att anpassa värdet för den work_mem användaren. ALTER ROLE Använd kommandot för att förbättra prestandan för användarens åtgärder.

  • Funktions-/procedurnivå: Om specifika funktioner eller procedurer genererar betydande temporära filer kan det vara fördelaktigt att öka work_mem värdet på den specifika funktions- eller procedurnivån. ALTER FUNCTION Använd kommandot eller ALTER PROCEDURE för att specifikt allokera mer minne till dessa åtgärder.

  • Databasnivå: Ändra work_mem på databasnivå om endast specifika databaser genererar ett stort antal temporära filer.

  • Global nivå: Om en analys av systemet visar att de flesta frågor genererar små temporära filer, medan bara ett fåtal skapar stora filer, kan det vara klokt att öka work_mem värdet globalt. Den här åtgärden underlättar för de flesta frågor att bearbeta i minnet, så att du kan undvika diskbaserade åtgärder och förbättra effektiviteten. Var dock alltid försiktig och övervaka minnesanvändningen på servern för att säkerställa att den kan hantera det ökade work_mem värdet.

Fastställa det minsta work_mem värdet för sorteringsåtgärder

Om du vill hitta det minsta work_mem värdet för en specifik fråga, särskilt en som genererar tillfälliga diskfiler under sorteringsprocessen, börjar du med att överväga den tillfälliga filstorlek som genererades under frågekörningen. Om en fråga till exempel genererar en temporär fil på 20 MB:

  1. Anslut till databasen med hjälp av psql eller önskad PostgreSQL-klient.
  2. Ange ett initialt work_mem värde som är något högre än 20 MB för att ta hänsyn till ytterligare rubriker vid bearbetning i minnet. Använd ett kommando som: SET work_mem TO '25MB'.
  3. Kör EXPLAIN ANALYZE på den problematiska frågan i samma session.
  4. Granska utdata för "Sort Method: quicksort Memory: xkB". Om det anger "external merge Disk: xkB"höjer work_mem du värdet stegvis och testa igen tills "quicksort Memory" det visas. Utseendet på "quicksort Memory" signaler om att frågan nu fungerar i minnet.
  5. När du har fastställt värdet via den här metoden kan du använda det antingen globalt eller på mer detaljerade nivåer (enligt beskrivningen tidigare) för att passa dina driftbehov.

autovacuum_work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala minne som ska användas av varje autovacuum-arbetsprocess.
Datatyp integer
Standardvärde -1
Tillåtna värden -1-2097151
Parametertyp dynamisk
Dokumentation autovacuum_work_mem

dynamic_shared_memory_type

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Väljer den dynamiska implementering av delat minne som används.
Datatyp uppräkning
Standardvärde posix
Tillåtna värden posix
Parametertyp skrivskyddad
Dokumentation dynamic_shared_memory_type

hash_mem_multiplier

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Flera av work_mem som ska användas för hash-tabeller.
Datatyp numeric
Standardvärde 1
Tillåtna värden 1-1000
Parametertyp dynamisk
Dokumentation hash_mem_multiplier

huge_pages

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Aktiverar/inaktiverar användningen av stora minnessidor. Den här inställningen gäller inte för servrar som har mindre än 4 virtuella kärnor.
Datatyp uppräkning
Standardvärde try
Tillåtna värden on,off,try
Parametertyp static
Dokumentation huge_pages

beskrivning

Enorma sidor är en funktion som gör att minne kan hanteras i större block. Du kan vanligtvis hantera block på upp till 2 MB, till skillnad från standardsidorna på 4 KB.

Att använda stora sidor kan ge prestandafördelar som effektivt avlastar processorn:

  • De minskar de kostnader som är associerade med minneshanteringsuppgifter som färre TLB-fel (translation lookaside buffer).
  • De förkortar den tid som krävs för minneshantering.

Mer specifikt kan du i PostgreSQL endast använda stora sidor för det delade minnesområdet. En betydande del av det delade minnesområdet allokeras för delade buffertar.

En annan fördel är att stora sidor förhindrar att det delade minnesområdet växlas ut till disken, vilket ytterligare stabiliserar prestandan.

Rekommendationer

  • För servrar som har betydande minnesresurser bör du undvika att inaktivera stora sidor. Om du inaktiverar stora sidor kan prestandan försämras.
  • Om du börjar med en mindre server som inte stöder stora sidor, men du förväntar dig att skala upp till en server som gör det, behåll huge_pages inställningen TRY för sömlös övergång och optimala prestanda.

Azure-specifika anteckningar

För servrar med fyra eller fler virtuella kärnor allokeras enorma sidor automatiskt från det underliggande operativsystemet. Funktionen är inte tillgänglig för servrar med färre än fyra virtuella kärnor. Antalet stora sidor justeras automatiskt om några inställningar för delat minne ändras, inklusive ändringar i shared_buffers.

logical_decoding_work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala minne som ska användas för logisk avkodning.
Datatyp integer
Standardvärde 65536
Tillåtna värden 64-2147483647
Parametertyp dynamisk
Dokumentation logical_decoding_work_mem

maintenance_work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala minne som ska användas för underhållsåtgärder som VACUUM, Create Index.
Datatyp integer
Standardvärde Beror på resurser (virtuella kärnor, RAM-minne eller diskutrymme) som allokerats till servern.
Tillåtna värden 1024-2097151
Parametertyp dynamisk
Dokumentation maintenance_work_mem

beskrivning

maintenance_work_mem är en konfigurationsparameter i PostgreSQL. Den styr mängden minne som allokeras för underhållsåtgärder, till exempel VACUUM, CREATE INDEXoch ALTER TABLE. Till skillnad från work_mem, som påverkar minnesallokering för frågeåtgärder, maintenance_work_mem är reserverad för uppgifter som underhåller och optimerar databasstrukturen.

Huvudpunkter

  • Vakuumminneslock: Om du vill påskynda rensningen av döda tupplar genom att öka maintenance_work_membör du vara medveten om att det VACUUM har en inbyggd begränsning för insamling av döda tupplar. Den kan bara använda upp till 1 GB minne för den här processen.
  • Separation av minne för autovacuum: Du kan använda inställningen autovacuum_work_mem för att styra det minne som autovacuum-åtgärder använder oberoende av varandra. Den här inställningen fungerar som en delmängd av maintenance_work_mem. Du kan bestämma hur mycket minne autovacuum använder utan att påverka minnesallokeringen för andra underhållsaktiviteter och datadefinitionsåtgärder.

Azure-specifika anteckningar

Standardvärdet för maintenance_work_mem serverparametern beräknas när du etablerar instansen av en flexibel Azure Database for PostgreSQL-server baserat på det produktnamn som du väljer för dess beräkning. Eventuella efterföljande ändringar av produktval i beräkningen som stöder den flexibla servern påverkar inte standardvärdet för serverparametern för den instansen maintenance_work_mem .

Varje gång du ändrar den produkt som tilldelats en instans bör du också justera värdet för parametern maintenance_work_mem enligt värdena i följande formel.

Formeln som används för att beräkna värdet maintenance_work_mem för är (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Baserat på den tidigare formeln visar följande tabell de värden som den här serverparametern skulle ställas in på beroende på mängden minne som har etablerats:

Minnesstorlek maintenance_work_mem
2 GiB 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GiB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GiB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 KiB

max_prepared_transactions

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala antalet samtidiga förberedda transaktioner. När du kör en replikserver måste du ange samma eller högre värde för den här parametern än på den primära servern.
Datatyp integer
Standardvärde 0
Tillåtna värden 0-262143
Parametertyp static
Dokumentation max_prepared_transactions

max_stack_depth

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger maximalt stackdjup i kilobyte.
Datatyp integer
Standardvärde 2048
Tillåtna värden 2048
Parametertyp skrivskyddad
Dokumentation max_stack_depth

shared_buffers

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger antalet buffertar för delat minne som används av servern. Enheten är 8 kB. Tillåtna värden ligger inom intervallet 10– 75 % av det tillgängliga minnet.
Datatyp integer
Standardvärde Beror på resurser (virtuella kärnor, RAM-minne eller diskutrymme) som allokerats till servern.
Tillåtna värden 16-1073741823
Parametertyp static
Dokumentation shared_buffers

beskrivning

Konfigurationsparametern shared_buffers avgör hur mycket systemminne som allokeras till PostgreSQL-databasen för buffring av data. Den fungerar som en centraliserad minnespool som är tillgänglig för alla databasprocesser.

När data behövs kontrollerar databasprocessen först den delade bufferten. Om nödvändiga data finns hämtas de snabbt och kringgår en mer tidskrävande diskläsning. Delade buffertar fungerar som mellanhand mellan databasprocesserna och disken och minskar effektivt antalet nödvändiga I/O-åtgärder.

Azure-specifika anteckningar

Standardvärdet för shared_buffers serverparametern beräknas när du etablerar instansen av en flexibel Azure Database for PostgreSQL-server baserat på det produktnamn som du väljer för dess beräkning. Eventuella efterföljande ändringar av produktval till den beräkning som stöder den flexibla servern påverkar inte standardvärdet för serverparametern för den instansen shared_buffers .

Varje gång du ändrar den produkt som tilldelats en instans bör du också justera värdet för parametern shared_buffers enligt värdena i följande formler.

För virtuella datorer med upp till 2 GiB minne är memoryGib * 16384formeln som används för att beräkna värdet shared_buffers för .

För virtuella datorer med mer än 2 GiB är memoryGib * 32768formeln som används för att beräkna värdet shared_buffers för .

Baserat på den tidigare formeln visar följande tabell de värden som den här serverparametern skulle ställas in på beroende på mängden minne som har etablerats:

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

shared_memory_type

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Väljer den implementering av delat minne som används för huvudregionen för delat minne.
Datatyp uppräkning
Standardvärde mmap
Tillåtna värden mmap
Parametertyp skrivskyddad
Dokumentation shared_memory_type

temp_buffers

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala antalet tillfälliga buffertar som används av varje databassession.
Datatyp integer
Standardvärde 1024
Tillåtna värden 100-1073741823
Parametertyp dynamisk
Dokumentation temp_buffers

work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger hur mycket minne som ska användas av interna sorteringsåtgärder och hash-tabeller innan du skriver till tillfälliga diskfiler.
Datatyp integer
Standardvärde 4096
Tillåtna värden 4096-2097151
Parametertyp dynamisk
Dokumentation work_mem

beskrivning

Parametern work_mem i PostgreSQL styr mängden minne som allokerats för vissa interna åtgärder i varje databassessions privata minnesområde. Exempel på dessa åtgärder är sortering och hashning.

Till skillnad från delade buffertar, som finns i det delade minnesområdet, work_mem allokeras i ett privat minnesutrymme per session eller per fråga. Genom att ange en lämplig work_mem storlek kan du avsevärt förbättra effektiviteten för dessa åtgärder och minska behovet av att skriva tillfälliga data till disk.

Huvudpunkter

  • Privat anslutningsminne: work_mem är en del av det privata minne som varje databassession använder. Det här minnet skiljer sig från det delade minnesområde som shared_buffers används.
  • Frågespecifik användning: Alla sessioner eller frågor använder work_meminte . Enkla frågor som SELECT 1 är osannolika att kräva work_mem. Komplexa frågor som omfattar åtgärder som sortering eller hashning kan dock förbruka ett eller flera segment av work_mem.
  • Parallella åtgärder: För frågor som sträcker sig över flera parallella serverdelar kan varje serverdel potentiellt använda ett eller flera segment av work_mem.

Övervaka och justera work_mem

Det är viktigt att kontinuerligt övervaka systemets prestanda och justera work_mem vid behov, främst om frågekörningstiderna relaterade till sorterings- eller hashåtgärder är långsamma. Här är sätt att övervaka prestanda med hjälp av verktyg som är tillgängliga i Azure Portal:

  • Insikt om frågeprestanda: Kontrollera fliken De vanligaste frågorna efter temporära filer för att identifiera frågor som genererar tillfälliga filer. Den här situationen tyder på ett potentiellt behov av att öka work_mem.
  • Felsökningsguider: Använd fliken Höga temporära filer i felsökningsguiderna för att identifiera problematiska frågor.
Detaljerad justering

När du hanterar parametern work_mem är det ofta mer effektivt att använda en detaljerad justeringsmetod i stället för att ange ett globalt värde. Den här metoden säkerställer att du allokerar minne på ett omdömesgillt sätt baserat på de specifika behoven hos processer och användare. Det minimerar också risken för problem med minnesbrist. Så här kan du gå till väga:

  • Användarnivå: Om en specifik användare främst är involverad i aggregerings- eller rapporteringsuppgifter, som är minnesintensiva, bör du överväga att anpassa värdet för den work_mem användaren. ALTER ROLE Använd kommandot för att förbättra prestandan för användarens åtgärder.

  • Funktions-/procedurnivå: Om specifika funktioner eller procedurer genererar betydande temporära filer kan det vara fördelaktigt att öka work_mem värdet på den specifika funktions- eller procedurnivån. ALTER FUNCTION Använd kommandot eller ALTER PROCEDURE för att specifikt allokera mer minne till dessa åtgärder.

  • Databasnivå: Ändra work_mem på databasnivå om endast specifika databaser genererar ett stort antal temporära filer.

  • Global nivå: Om en analys av systemet visar att de flesta frågor genererar små temporära filer, medan bara ett fåtal skapar stora filer, kan det vara klokt att öka work_mem värdet globalt. Den här åtgärden underlättar för de flesta frågor att bearbeta i minnet, så att du kan undvika diskbaserade åtgärder och förbättra effektiviteten. Var dock alltid försiktig och övervaka minnesanvändningen på servern för att säkerställa att den kan hantera det ökade work_mem värdet.

Fastställa det minsta work_mem värdet för sorteringsåtgärder

Om du vill hitta det minsta work_mem värdet för en specifik fråga, särskilt en som genererar tillfälliga diskfiler under sorteringsprocessen, börjar du med att överväga den tillfälliga filstorlek som genererades under frågekörningen. Om en fråga till exempel genererar en temporär fil på 20 MB:

  1. Anslut till databasen med hjälp av psql eller önskad PostgreSQL-klient.
  2. Ange ett initialt work_mem värde som är något högre än 20 MB för att ta hänsyn till ytterligare rubriker vid bearbetning i minnet. Använd ett kommando som: SET work_mem TO '25MB'.
  3. Kör EXPLAIN ANALYZE på den problematiska frågan i samma session.
  4. Granska utdata för "Sort Method: quicksort Memory: xkB". Om det anger "external merge Disk: xkB"höjer work_mem du värdet stegvis och testa igen tills "quicksort Memory" det visas. Utseendet på "quicksort Memory" signaler om att frågan nu fungerar i minnet.
  5. När du har fastställt värdet via den här metoden kan du använda det antingen globalt eller på mer detaljerade nivåer (enligt beskrivningen tidigare) för att passa dina driftbehov.

autovacuum_work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala minne som ska användas av varje autovacuum-arbetsprocess.
Datatyp integer
Standardvärde -1
Tillåtna värden -1-2097151
Parametertyp dynamisk
Dokumentation autovacuum_work_mem

dynamic_shared_memory_type

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Väljer den dynamiska implementering av delat minne som används.
Datatyp uppräkning
Standardvärde posix
Tillåtna värden posix
Parametertyp skrivskyddad
Dokumentation dynamic_shared_memory_type

hash_mem_multiplier

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Flera av work_mem som ska användas för hash-tabeller.
Datatyp numeric
Standardvärde 1
Tillåtna värden 1-1000
Parametertyp dynamisk
Dokumentation hash_mem_multiplier

huge_pages

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Aktiverar/inaktiverar användningen av stora minnessidor. Den här inställningen gäller inte för servrar som har mindre än 4 virtuella kärnor.
Datatyp uppräkning
Standardvärde try
Tillåtna värden on,off,try
Parametertyp static
Dokumentation huge_pages

beskrivning

Enorma sidor är en funktion som gör att minne kan hanteras i större block. Du kan vanligtvis hantera block på upp till 2 MB, till skillnad från standardsidorna på 4 KB.

Att använda stora sidor kan ge prestandafördelar som effektivt avlastar processorn:

  • De minskar de kostnader som är associerade med minneshanteringsuppgifter som färre TLB-fel (translation lookaside buffer).
  • De förkortar den tid som krävs för minneshantering.

Mer specifikt kan du i PostgreSQL endast använda stora sidor för det delade minnesområdet. En betydande del av det delade minnesområdet allokeras för delade buffertar.

En annan fördel är att stora sidor förhindrar att det delade minnesområdet växlas ut till disken, vilket ytterligare stabiliserar prestandan.

Rekommendationer

  • För servrar som har betydande minnesresurser bör du undvika att inaktivera stora sidor. Om du inaktiverar stora sidor kan prestandan försämras.
  • Om du börjar med en mindre server som inte stöder stora sidor, men du förväntar dig att skala upp till en server som gör det, behåll huge_pages inställningen TRY för sömlös övergång och optimala prestanda.

Azure-specifika anteckningar

För servrar med fyra eller fler virtuella kärnor allokeras enorma sidor automatiskt från det underliggande operativsystemet. Funktionen är inte tillgänglig för servrar med färre än fyra virtuella kärnor. Antalet stora sidor justeras automatiskt om några inställningar för delat minne ändras, inklusive ändringar i shared_buffers.

maintenance_work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala minne som ska användas för underhållsåtgärder som VACUUM, Create Index.
Datatyp integer
Standardvärde Beror på resurser (virtuella kärnor, RAM-minne eller diskutrymme) som allokerats till servern.
Tillåtna värden 1024-2097151
Parametertyp dynamisk
Dokumentation maintenance_work_mem

beskrivning

maintenance_work_mem är en konfigurationsparameter i PostgreSQL. Den styr mängden minne som allokeras för underhållsåtgärder, till exempel VACUUM, CREATE INDEXoch ALTER TABLE. Till skillnad från work_mem, som påverkar minnesallokering för frågeåtgärder, maintenance_work_mem är reserverad för uppgifter som underhåller och optimerar databasstrukturen.

Huvudpunkter

  • Vakuumminneslock: Om du vill påskynda rensningen av döda tupplar genom att öka maintenance_work_membör du vara medveten om att det VACUUM har en inbyggd begränsning för insamling av döda tupplar. Den kan bara använda upp till 1 GB minne för den här processen.
  • Separation av minne för autovacuum: Du kan använda inställningen autovacuum_work_mem för att styra det minne som autovacuum-åtgärder använder oberoende av varandra. Den här inställningen fungerar som en delmängd av maintenance_work_mem. Du kan bestämma hur mycket minne autovacuum använder utan att påverka minnesallokeringen för andra underhållsaktiviteter och datadefinitionsåtgärder.

Azure-specifika anteckningar

Standardvärdet för maintenance_work_mem serverparametern beräknas när du etablerar instansen av en flexibel Azure Database for PostgreSQL-server baserat på det produktnamn som du väljer för dess beräkning. Eventuella efterföljande ändringar av produktval i beräkningen som stöder den flexibla servern påverkar inte standardvärdet för serverparametern för den instansen maintenance_work_mem .

Varje gång du ändrar den produkt som tilldelats en instans bör du också justera värdet för parametern maintenance_work_mem enligt värdena i följande formel.

Formeln som används för att beräkna värdet maintenance_work_mem för är (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Baserat på den tidigare formeln visar följande tabell de värden som den här serverparametern skulle ställas in på beroende på mängden minne som har etablerats:

Minnesstorlek maintenance_work_mem
2 GiB 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GiB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GiB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 KiB

max_prepared_transactions

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala antalet samtidiga förberedda transaktioner. När du kör en replikserver måste du ange samma eller högre värde för den här parametern än på den primära servern.
Datatyp integer
Standardvärde 0
Tillåtna värden 0-262143
Parametertyp static
Dokumentation max_prepared_transactions

max_stack_depth

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger maximalt stackdjup i kilobyte.
Datatyp integer
Standardvärde 2048
Tillåtna värden 2048
Parametertyp skrivskyddad
Dokumentation max_stack_depth

shared_buffers

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger antalet buffertar för delat minne som används av servern. Enheten är 8 kB. Tillåtna värden ligger inom intervallet 10– 75 % av det tillgängliga minnet.
Datatyp integer
Standardvärde Beror på resurser (virtuella kärnor, RAM-minne eller diskutrymme) som allokerats till servern.
Tillåtna värden 16-1073741823
Parametertyp static
Dokumentation shared_buffers

beskrivning

Konfigurationsparametern shared_buffers avgör hur mycket systemminne som allokeras till PostgreSQL-databasen för buffring av data. Den fungerar som en centraliserad minnespool som är tillgänglig för alla databasprocesser.

När data behövs kontrollerar databasprocessen först den delade bufferten. Om nödvändiga data finns hämtas de snabbt och kringgår en mer tidskrävande diskläsning. Delade buffertar fungerar som mellanhand mellan databasprocesserna och disken och minskar effektivt antalet nödvändiga I/O-åtgärder.

Azure-specifika anteckningar

Standardvärdet för shared_buffers serverparametern beräknas när du etablerar instansen av en flexibel Azure Database for PostgreSQL-server baserat på det produktnamn som du väljer för dess beräkning. Eventuella efterföljande ändringar av produktval till den beräkning som stöder den flexibla servern påverkar inte standardvärdet för serverparametern för den instansen shared_buffers .

Varje gång du ändrar den produkt som tilldelats en instans bör du också justera värdet för parametern shared_buffers enligt värdena i följande formler.

För virtuella datorer med upp till 2 GiB minne är memoryGib * 16384formeln som används för att beräkna värdet shared_buffers för .

För virtuella datorer med mer än 2 GiB är memoryGib * 32768formeln som används för att beräkna värdet shared_buffers för .

Baserat på den tidigare formeln visar följande tabell de värden som den här serverparametern skulle ställas in på beroende på mängden minne som har etablerats:

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

shared_memory_type

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Väljer den implementering av delat minne som används för huvudregionen för delat minne.
Datatyp uppräkning
Standardvärde mmap
Tillåtna värden mmap
Parametertyp skrivskyddad
Dokumentation shared_memory_type

temp_buffers

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala antalet tillfälliga buffertar som används av varje databassession.
Datatyp integer
Standardvärde 1024
Tillåtna värden 100-1073741823
Parametertyp dynamisk
Dokumentation temp_buffers

work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger hur mycket minne som ska användas av interna sorteringsåtgärder och hash-tabeller innan du skriver till tillfälliga diskfiler.
Datatyp integer
Standardvärde 4096
Tillåtna värden 4096-2097151
Parametertyp dynamisk
Dokumentation work_mem

beskrivning

Parametern work_mem i PostgreSQL styr mängden minne som allokerats för vissa interna åtgärder i varje databassessions privata minnesområde. Exempel på dessa åtgärder är sortering och hashning.

Till skillnad från delade buffertar, som finns i det delade minnesområdet, work_mem allokeras i ett privat minnesutrymme per session eller per fråga. Genom att ange en lämplig work_mem storlek kan du avsevärt förbättra effektiviteten för dessa åtgärder och minska behovet av att skriva tillfälliga data till disk.

Huvudpunkter

  • Privat anslutningsminne: work_mem är en del av det privata minne som varje databassession använder. Det här minnet skiljer sig från det delade minnesområde som shared_buffers används.
  • Frågespecifik användning: Alla sessioner eller frågor använder work_meminte . Enkla frågor som SELECT 1 är osannolika att kräva work_mem. Komplexa frågor som omfattar åtgärder som sortering eller hashning kan dock förbruka ett eller flera segment av work_mem.
  • Parallella åtgärder: För frågor som sträcker sig över flera parallella serverdelar kan varje serverdel potentiellt använda ett eller flera segment av work_mem.

Övervaka och justera work_mem

Det är viktigt att kontinuerligt övervaka systemets prestanda och justera work_mem vid behov, främst om frågekörningstiderna relaterade till sorterings- eller hashåtgärder är långsamma. Här är sätt att övervaka prestanda med hjälp av verktyg som är tillgängliga i Azure Portal:

  • Insikt om frågeprestanda: Kontrollera fliken De vanligaste frågorna efter temporära filer för att identifiera frågor som genererar tillfälliga filer. Den här situationen tyder på ett potentiellt behov av att öka work_mem.
  • Felsökningsguider: Använd fliken Höga temporära filer i felsökningsguiderna för att identifiera problematiska frågor.
Detaljerad justering

När du hanterar parametern work_mem är det ofta mer effektivt att använda en detaljerad justeringsmetod i stället för att ange ett globalt värde. Den här metoden säkerställer att du allokerar minne på ett omdömesgillt sätt baserat på de specifika behoven hos processer och användare. Det minimerar också risken för problem med minnesbrist. Så här kan du gå till väga:

  • Användarnivå: Om en specifik användare främst är involverad i aggregerings- eller rapporteringsuppgifter, som är minnesintensiva, bör du överväga att anpassa värdet för den work_mem användaren. ALTER ROLE Använd kommandot för att förbättra prestandan för användarens åtgärder.

  • Funktions-/procedurnivå: Om specifika funktioner eller procedurer genererar betydande temporära filer kan det vara fördelaktigt att öka work_mem värdet på den specifika funktions- eller procedurnivån. ALTER FUNCTION Använd kommandot eller ALTER PROCEDURE för att specifikt allokera mer minne till dessa åtgärder.

  • Databasnivå: Ändra work_mem på databasnivå om endast specifika databaser genererar ett stort antal temporära filer.

  • Global nivå: Om en analys av systemet visar att de flesta frågor genererar små temporära filer, medan bara ett fåtal skapar stora filer, kan det vara klokt att öka work_mem värdet globalt. Den här åtgärden underlättar för de flesta frågor att bearbeta i minnet, så att du kan undvika diskbaserade åtgärder och förbättra effektiviteten. Var dock alltid försiktig och övervaka minnesanvändningen på servern för att säkerställa att den kan hantera det ökade work_mem värdet.

Fastställa det minsta work_mem värdet för sorteringsåtgärder

Om du vill hitta det minsta work_mem värdet för en specifik fråga, särskilt en som genererar tillfälliga diskfiler under sorteringsprocessen, börjar du med att överväga den tillfälliga filstorlek som genererades under frågekörningen. Om en fråga till exempel genererar en temporär fil på 20 MB:

  1. Anslut till databasen med hjälp av psql eller önskad PostgreSQL-klient.
  2. Ange ett initialt work_mem värde som är något högre än 20 MB för att ta hänsyn till ytterligare rubriker vid bearbetning i minnet. Använd ett kommando som: SET work_mem TO '25MB'.
  3. Kör EXPLAIN ANALYZE på den problematiska frågan i samma session.
  4. Granska utdata för "Sort Method: quicksort Memory: xkB". Om det anger "external merge Disk: xkB"höjer work_mem du värdet stegvis och testa igen tills "quicksort Memory" det visas. Utseendet på "quicksort Memory" signaler om att frågan nu fungerar i minnet.
  5. När du har fastställt värdet via den här metoden kan du använda det antingen globalt eller på mer detaljerade nivåer (enligt beskrivningen tidigare) för att passa dina driftbehov.

autovacuum_work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala minne som ska användas av varje autovacuum-arbetsprocess.
Datatyp integer
Standardvärde -1
Tillåtna värden -1-2097151
Parametertyp dynamisk
Dokumentation autovacuum_work_mem

dynamic_shared_memory_type

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Väljer den dynamiska implementering av delat minne som används.
Datatyp uppräkning
Standardvärde posix
Tillåtna värden posix
Parametertyp skrivskyddad
Dokumentation dynamic_shared_memory_type

huge_pages

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Aktiverar/inaktiverar användningen av stora minnessidor. Den här inställningen gäller inte för servrar som har mindre än 4 virtuella kärnor.
Datatyp uppräkning
Standardvärde try
Tillåtna värden on,off,try
Parametertyp static
Dokumentation huge_pages

beskrivning

Enorma sidor är en funktion som gör att minne kan hanteras i större block. Du kan vanligtvis hantera block på upp till 2 MB, till skillnad från standardsidorna på 4 KB.

Att använda stora sidor kan ge prestandafördelar som effektivt avlastar processorn:

  • De minskar de kostnader som är associerade med minneshanteringsuppgifter som färre TLB-fel (translation lookaside buffer).
  • De förkortar den tid som krävs för minneshantering.

Mer specifikt kan du i PostgreSQL endast använda stora sidor för det delade minnesområdet. En betydande del av det delade minnesområdet allokeras för delade buffertar.

En annan fördel är att stora sidor förhindrar att det delade minnesområdet växlas ut till disken, vilket ytterligare stabiliserar prestandan.

Rekommendationer

  • För servrar som har betydande minnesresurser bör du undvika att inaktivera stora sidor. Om du inaktiverar stora sidor kan prestandan försämras.
  • Om du börjar med en mindre server som inte stöder stora sidor, men du förväntar dig att skala upp till en server som gör det, behåll huge_pages inställningen TRY för sömlös övergång och optimala prestanda.

Azure-specifika anteckningar

För servrar med fyra eller fler virtuella kärnor allokeras enorma sidor automatiskt från det underliggande operativsystemet. Funktionen är inte tillgänglig för servrar med färre än fyra virtuella kärnor. Antalet stora sidor justeras automatiskt om några inställningar för delat minne ändras, inklusive ändringar i shared_buffers.

maintenance_work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala minne som ska användas för underhållsåtgärder som VACUUM, Create Index.
Datatyp integer
Standardvärde Beror på resurser (virtuella kärnor, RAM-minne eller diskutrymme) som allokerats till servern.
Tillåtna värden 1024-2097151
Parametertyp dynamisk
Dokumentation maintenance_work_mem

beskrivning

maintenance_work_mem är en konfigurationsparameter i PostgreSQL. Den styr mängden minne som allokeras för underhållsåtgärder, till exempel VACUUM, CREATE INDEXoch ALTER TABLE. Till skillnad från work_mem, som påverkar minnesallokering för frågeåtgärder, maintenance_work_mem är reserverad för uppgifter som underhåller och optimerar databasstrukturen.

Huvudpunkter

  • Vakuumminneslock: Om du vill påskynda rensningen av döda tupplar genom att öka maintenance_work_membör du vara medveten om att det VACUUM har en inbyggd begränsning för insamling av döda tupplar. Den kan bara använda upp till 1 GB minne för den här processen.
  • Separation av minne för autovacuum: Du kan använda inställningen autovacuum_work_mem för att styra det minne som autovacuum-åtgärder använder oberoende av varandra. Den här inställningen fungerar som en delmängd av maintenance_work_mem. Du kan bestämma hur mycket minne autovacuum använder utan att påverka minnesallokeringen för andra underhållsaktiviteter och datadefinitionsåtgärder.

Azure-specifika anteckningar

Standardvärdet för maintenance_work_mem serverparametern beräknas när du etablerar instansen av en flexibel Azure Database for PostgreSQL-server baserat på det produktnamn som du väljer för dess beräkning. Eventuella efterföljande ändringar av produktval i beräkningen som stöder den flexibla servern påverkar inte standardvärdet för serverparametern för den instansen maintenance_work_mem .

Varje gång du ändrar den produkt som tilldelats en instans bör du också justera värdet för parametern maintenance_work_mem enligt värdena i följande formel.

Formeln som används för att beräkna värdet maintenance_work_mem för är (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Baserat på den tidigare formeln visar följande tabell de värden som den här serverparametern skulle ställas in på beroende på mängden minne som har etablerats:

Minnesstorlek maintenance_work_mem
2 GiB 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GiB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GiB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 KiB

max_prepared_transactions

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala antalet samtidiga förberedda transaktioner. När du kör en replikserver måste du ange samma eller högre värde för den här parametern än på den primära servern.
Datatyp integer
Standardvärde 0
Tillåtna värden 0-262143
Parametertyp static
Dokumentation max_prepared_transactions

max_stack_depth

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger maximalt stackdjup i kilobyte.
Datatyp integer
Standardvärde 2048
Tillåtna värden 2048
Parametertyp skrivskyddad
Dokumentation max_stack_depth

shared_buffers

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger antalet buffertar för delat minne som används av servern. Enheten är 8 kB. Tillåtna värden ligger inom intervallet 10– 75 % av det tillgängliga minnet.
Datatyp integer
Standardvärde Beror på resurser (virtuella kärnor, RAM-minne eller diskutrymme) som allokerats till servern.
Tillåtna värden 16-1073741823
Parametertyp static
Dokumentation shared_buffers

beskrivning

Konfigurationsparametern shared_buffers avgör hur mycket systemminne som allokeras till PostgreSQL-databasen för buffring av data. Den fungerar som en centraliserad minnespool som är tillgänglig för alla databasprocesser.

När data behövs kontrollerar databasprocessen först den delade bufferten. Om nödvändiga data finns hämtas de snabbt och kringgår en mer tidskrävande diskläsning. Delade buffertar fungerar som mellanhand mellan databasprocesserna och disken och minskar effektivt antalet nödvändiga I/O-åtgärder.

Azure-specifika anteckningar

Standardvärdet för shared_buffers serverparametern beräknas när du etablerar instansen av en flexibel Azure Database for PostgreSQL-server baserat på det produktnamn som du väljer för dess beräkning. Eventuella efterföljande ändringar av produktval till den beräkning som stöder den flexibla servern påverkar inte standardvärdet för serverparametern för den instansen shared_buffers .

Varje gång du ändrar den produkt som tilldelats en instans bör du också justera värdet för parametern shared_buffers enligt värdena i följande formler.

För virtuella datorer med upp till 2 GiB minne är memoryGib * 16384formeln som används för att beräkna värdet shared_buffers för .

För virtuella datorer med mer än 2 GiB är memoryGib * 32768formeln som används för att beräkna värdet shared_buffers för .

Baserat på den tidigare formeln visar följande tabell de värden som den här serverparametern skulle ställas in på beroende på mängden minne som har etablerats:

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

temp_buffers

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger det maximala antalet tillfälliga buffertar som används av varje databassession.
Datatyp integer
Standardvärde 1024
Tillåtna värden 100-1073741823
Parametertyp dynamisk
Dokumentation temp_buffers

work_mem

Attribut Värde
Kategori Resursanvändning/minne
beskrivning Anger hur mycket minne som ska användas av interna sorteringsåtgärder och hash-tabeller innan du skriver till tillfälliga diskfiler.
Datatyp integer
Standardvärde 4096
Tillåtna värden 4096-2097151
Parametertyp dynamisk
Dokumentation work_mem

beskrivning

Parametern work_mem i PostgreSQL styr mängden minne som allokerats för vissa interna åtgärder i varje databassessions privata minnesområde. Exempel på dessa åtgärder är sortering och hashning.

Till skillnad från delade buffertar, som finns i det delade minnesområdet, work_mem allokeras i ett privat minnesutrymme per session eller per fråga. Genom att ange en lämplig work_mem storlek kan du avsevärt förbättra effektiviteten för dessa åtgärder och minska behovet av att skriva tillfälliga data till disk.

Huvudpunkter

  • Privat anslutningsminne: work_mem är en del av det privata minne som varje databassession använder. Det här minnet skiljer sig från det delade minnesområde som shared_buffers används.
  • Frågespecifik användning: Alla sessioner eller frågor använder work_meminte . Enkla frågor som SELECT 1 är osannolika att kräva work_mem. Komplexa frågor som omfattar åtgärder som sortering eller hashning kan dock förbruka ett eller flera segment av work_mem.
  • Parallella åtgärder: För frågor som sträcker sig över flera parallella serverdelar kan varje serverdel potentiellt använda ett eller flera segment av work_mem.

Övervaka och justera work_mem

Det är viktigt att kontinuerligt övervaka systemets prestanda och justera work_mem vid behov, främst om frågekörningstiderna relaterade till sorterings- eller hashåtgärder är långsamma. Här är sätt att övervaka prestanda med hjälp av verktyg som är tillgängliga i Azure Portal:

  • Insikt om frågeprestanda: Kontrollera fliken De vanligaste frågorna efter temporära filer för att identifiera frågor som genererar tillfälliga filer. Den här situationen tyder på ett potentiellt behov av att öka work_mem.
  • Felsökningsguider: Använd fliken Höga temporära filer i felsökningsguiderna för att identifiera problematiska frågor.
Detaljerad justering

När du hanterar parametern work_mem är det ofta mer effektivt att använda en detaljerad justeringsmetod i stället för att ange ett globalt värde. Den här metoden säkerställer att du allokerar minne på ett omdömesgillt sätt baserat på de specifika behoven hos processer och användare. Det minimerar också risken för problem med minnesbrist. Så här kan du gå till väga:

  • Användarnivå: Om en specifik användare främst är involverad i aggregerings- eller rapporteringsuppgifter, som är minnesintensiva, bör du överväga att anpassa värdet för den work_mem användaren. ALTER ROLE Använd kommandot för att förbättra prestandan för användarens åtgärder.

  • Funktions-/procedurnivå: Om specifika funktioner eller procedurer genererar betydande temporära filer kan det vara fördelaktigt att öka work_mem värdet på den specifika funktions- eller procedurnivån. ALTER FUNCTION Använd kommandot eller ALTER PROCEDURE för att specifikt allokera mer minne till dessa åtgärder.

  • Databasnivå: Ändra work_mem på databasnivå om endast specifika databaser genererar ett stort antal temporära filer.

  • Global nivå: Om en analys av systemet visar att de flesta frågor genererar små temporära filer, medan bara ett fåtal skapar stora filer, kan det vara klokt att öka work_mem värdet globalt. Den här åtgärden underlättar för de flesta frågor att bearbeta i minnet, så att du kan undvika diskbaserade åtgärder och förbättra effektiviteten. Var dock alltid försiktig och övervaka minnesanvändningen på servern för att säkerställa att den kan hantera det ökade work_mem värdet.

Fastställa det minsta work_mem värdet för sorteringsåtgärder

Om du vill hitta det minsta work_mem värdet för en specifik fråga, särskilt en som genererar tillfälliga diskfiler under sorteringsprocessen, börjar du med att överväga den tillfälliga filstorlek som genererades under frågekörningen. Om en fråga till exempel genererar en temporär fil på 20 MB:

  1. Anslut till databasen med hjälp av psql eller önskad PostgreSQL-klient.
  2. Ange ett initialt work_mem värde som är något högre än 20 MB för att ta hänsyn till ytterligare rubriker vid bearbetning i minnet. Använd ett kommando som: SET work_mem TO '25MB'.
  3. Kör EXPLAIN ANALYZE på den problematiska frågan i samma session.
  4. Granska utdata för "Sort Method: quicksort Memory: xkB". Om det anger "external merge Disk: xkB"höjer work_mem du värdet stegvis och testa igen tills "quicksort Memory" det visas. Utseendet på "quicksort Memory" signaler om att frågan nu fungerar i minnet.
  5. När du har fastställt värdet via den här metoden kan du använda det antingen globalt eller på mer detaljerade nivåer (enligt beskrivningen tidigare) för att passa dina driftbehov.