Ydelsesoptimering og optimering af forespørgsler i PostgreSQL · Lektion

Tuning af hukommelse (shared_buffers, work_mem)

Optimer hukommelsesforbruget ved at konfigurere `shared_buffers`, `work_mem` og andre hukommelsesrelaterede indstillinger korrekt.

Lektion 2 af 411 trin

Tuning af hukommelse (shared_buffers, work_mem) er en gratis Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Ydelsesoptimering og optimering af forespørgsler i PostgreSQL, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-kurset indeholder 4 lektioner i alt.

Hukommelse er vigtig for PostgreSQL

Det er afgørende for en lynhurtig ydeevne at optimere den måde, PostgreSQL bruger hukommelse på. Tænk på hukommelsen som databasens midlertidige arbejdsområde.

Med den rigtige hukommelseskonfiguration skal du vente mindre på data fra langsomme diske, og forespørgsler behandles hurtigere.

Forklaring af delte buffere

shared_buffers er en af de vigtigste hukommelsesindstillinger. Den angiver, hvor meget RAM PostgreSQL bruger til at cache datasider.

  • Funktion: Gemmer ofte anvendte datablokke fra tabeller og indekser.
  • Betydning: Reducerer disk-I/O, fordi PostgreSQL kan levere data direkte fra RAM.

Konfigurer delte buffere

Et almindeligt udgangspunkt for shared_buffers er 25 % af systemets samlede RAM. På dedikerede databaseservere kan du muligvis gå op til 40 %.

  • For lav værdi? Hyppige disklæsninger.
  • For høj værdi? Mindre RAM til operativsystemet og andre processer, hvilket potentielt kan medføre swapping.

Husk at genstarte PostgreSQL, når du har ændret denne indstilling i postgresql.conf.

work_mem til sortering og hash-tabeller

work_mem er hukommelse, der tildeles til individuelle forespørgselsoperationer som sortering (ORDER BY, GROUP BY) og hash-tabeller (hash-join).

I modsætning til shared_buffers er denne hukommelse privat for hver operation og midlertidig. Flere operationer i en enkelt forespørgsel eller flere samtidige forespørgsler kan hver især bruge deres egen work_mem.

Finjuster work_mem

Hvis en forespørgselsoperation overskrider den tildelte work_mem, flyttes data til disken ved hjælp af midlertidige filer. Det er meget langsommere!

Du kan angive work_mem globalt eller pr. session eller forespørgsel efter behov. Et godt udgangspunkt er 4-16 MB, men overvåg, om data flyttes til disken, ved hjælp af EXPLAIN ANALYZE.

Vedligeholdelseshukommelse (maintenance_work_mem)

maintenance_work_mem er hukommelse, der er reserveret til vedligeholdelsesopgaver, nærmere bestemt:

  • VACUUM
  • CREATE INDEX
  • ALTER TABLE (tilføjelse af kolonner osv.)

Disse operationer kan kræve meget hukommelse. Det er almindeligt at sætte denne værdi højere end work_mem, f.eks. til 64-512 MB, for at gøre vedligeholdelsen hurtigere.

effective_cache_size: Vejledning til forespørgselsplanlæggeren

effective_cache_size er ikke hukommelse, der tildeles af PostgreSQL. I stedet fortæller den forespørgselsplanlæggeren, hvor meget hukommelse den forventer er tilgængelig til caching af data.

Dette omfatter shared_buffers OG operativsystemets filsystemcache. En højere værdi får planlæggeren til i højere grad at vælge indeksscanninger frem for sekventielle scanninger, fordi den antager, at dataene sandsynligvis allerede er i hukommelsen.

Rediger konfigurationen

De fleste af disse indstillinger findes i filen postgresql.conf. Du kan også ændre dem under kørsel ved hjælp af ALTER SYSTEM eller ALTER DATABASE/ALTER ROLE for mere detaljeret styring.

Husk at genindlæse konfigurationen (eller genstarte PostgreSQL for shared_buffers), når du har foretaget ændringer i postgresql.conf.

Samlet effekt på ydeevnen

Når disse hukommelsesparametre er justeret korrekt, arbejder de sammen om at:

  • Reducere disk-I/O: Data, der leveres fra RAM, er meget hurtigere.
  • Gøre forespørgsler hurtigere: Sorteringer, join-operationer og aggregeringer afsluttes hurtigere.
  • Optimere vedligeholdelsen: VACUUM og oprettelse af indekser kører hurtigere.
  • Forbedre planlæggerens beslutninger: Bedre forespørgselsplaner giver bedre udførelse.

Hurtigt tjek: Hukommelsens roller

Hvilken PostgreSQL-hukommelsesparameter bruges primært af individuelle forespørgselsoperationer som sortering og hashing og kan medføre, at data flyttes til disken, hvis den sættes for lavt?

Opsummering: Det vigtigste om justering af hukommelse

Du har udforsket de vigtigste PostgreSQL-parametre for hukommelse:

  • shared_buffers: Primær datacache, ca. 25 % af RAM.
  • work_mem: Hukommelse pr. operation til sortering og hashing.
  • maintenance_work_mem: Til VACUUM og CREATE INDEX.
  • effective_cache_size: Et fingerpeg til forespørgselsplanlæggeren.

Omhyggelig justering af disse parametre kan forbedre databasens ydeevne markant!

Gratis at komme i gang

Lær SQL med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
22
Lektioner
88

Ofte stillede spørgsmål

Er lektionen “Tuning af hukommelse (shared_buffers, work_mem)” gratis?

Ja — alle 3 lektioner i læringssporet Ydelsesoptimering og optimering af forespørgsler i PostgreSQL, inklusive “Tuning af hukommelse (shared_buffers, work_mem)”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Tuning af hukommelse (shared_buffers, work_mem)”?

Optimer hukommelsesforbruget ved at konfigurere `shared_buffers`, `work_mem` og andre hukommelsesrelaterede indstillinger korrekt. Du øver dig i Ydelsesoptimering og optimering af forespørgsler i PostgreSQL med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Ydelsesoptimering og optimering af forespørgsler i PostgreSQL?

Der kræves ingen tidligere erfaring. Ydelsesoptimering og optimering af forespørgsler i PostgreSQL på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Tuning af hukommelse (shared_buffers, work_mem)”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-lektion?

Ja. Alle Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Vigtige parametre i postgresql.conf
  2. Tuning af hukommelse (shared_buffers, work_mem)
  3. Tuning af disk-I/O og checkpoints
  4. Justering af plannerens omkostningskonstanter
← Tilbage til Ydelsesoptimering og optimering af forespørgsler i PostgreSQL