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 2
Parametertyp skrivskyddad
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.

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. Genom att fungera som mellanhand mellan databasprocesserna och disken minskar shared_buffers effektivt antalet nödvändiga I/O-åtgärder.

Azure-specifika anteckningar

Inställningen shared_buffers skalas linjärt (ungefär) när virtuella kärnor ökar på en nivå.

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-portalen:

  • 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 2
Parametertyp skrivskyddad
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.

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. Genom att fungera som mellanhand mellan databasprocesserna och disken minskar shared_buffers effektivt antalet nödvändiga I/O-åtgärder.

Azure-specifika anteckningar

Inställningen shared_buffers skalas linjärt (ungefär) när virtuella kärnor ökar på en nivå.

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-portalen:

  • 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
Parametertyp skrivskyddad
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.

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. Genom att fungera som mellanhand mellan databasprocesserna och disken minskar shared_buffers effektivt antalet nödvändiga I/O-åtgärder.

Azure-specifika anteckningar

Inställningen shared_buffers skalas linjärt (ungefär) när virtuella kärnor ökar på en nivå.

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-portalen:

  • 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
Parametertyp skrivskyddad
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 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.

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. Genom att fungera som mellanhand mellan databasprocesserna och disken minskar shared_buffers effektivt antalet nödvändiga I/O-åtgärder.

Azure-specifika anteckningar

Inställningen shared_buffers skalas linjärt (ungefär) när virtuella kärnor ökar på en nivå.

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-portalen:

  • 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
Parametertyp skrivskyddad
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.

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. Genom att fungera som mellanhand mellan databasprocesserna och disken minskar shared_buffers effektivt antalet nödvändiga I/O-åtgärder.

Azure-specifika anteckningar

Inställningen shared_buffers skalas linjärt (ungefär) när virtuella kärnor ökar på en nivå.

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-portalen:

  • 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.

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. Genom att fungera som mellanhand mellan databasprocesserna och disken minskar shared_buffers effektivt antalet nödvändiga I/O-åtgärder.

Azure-specifika anteckningar

Inställningen shared_buffers skalas linjärt (ungefär) när virtuella kärnor ökar på en nivå.

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-portalen:

  • 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.