Radiorienterad lagring och partitioner

Förbättra frågeprestanda i PostgreSQL

Amy McCarty

Instructor

Typer av databaslagring

Radiorienterad lagring

  • Relation mellan kolumner bevaras

Kolumnorienterad lagring

  • Relation mellan rader bevaras
id name species age habitat received
01 Bob panda 2 Asia 2018
02 Sunny zebra 3 Africa 2018
03 Beco zebra 10 Africa 2017
04 Coco koala 5 Australia 2016
Förbättra frågeprestanda i PostgreSQL

Radiorienterad

Radiorienterad lagring

  • Relation mellan kolumner bevaras

 

id name species age habitat received
01 Bob panda 2 Asia 2018
Förbättra frågeprestanda i PostgreSQL

Kolumnorienterad

Kolumnorienterad lagring

  • Relation mellan rader bevaras  

Två tabeller. Den första visar id och namn: 01 – Bob, 02 – Sunny, 03 – Beco, 04 – Coco. Den andra visar samma id med art: 01 – panda, 02 – zebra, 03 – zebra, 04 – koala.

Förbättra frågeprestanda i PostgreSQL

Radiorienterad lagring

 

  • En rad lagras på samma plats
  • Snabbt att lägga till eller ta bort hela poster
  • Snabbt att returnera alla kolumner
    • Långsamt att returnera alla rader
Förbättra frågeprestanda i PostgreSQL

Minska antalet rader

Minska antalet rader

  • WHERE-filter
  • INNER JOIN
  • DISTINCT
  • LIMIT
Förbättra frågeprestanda i PostgreSQL

Metoder för radiorienterade databaser

Partitioner

  • Metod för att dela en (överordnad) tabell i flera mindre (underordnade) tabeller

Index

  • Metod för att skapa sorterade kolumnnycklar och förbättra sökning

 

Att använda partitioner och index

  • Kräver konfiguration och underhåll
  • Förekomst framgår av databasadministratör eller dokumentation
Förbättra frågeprestanda i PostgreSQL

Partitionsstruktur

En överordnad tabell med djurparkens djur och fyra poster som visar id, namn, art, livsmiljö och år mottaget. 01 – Bob – Panda – ålder – livsmiljö – mottaget. 02 – Sunny – Zebra – 3 – Afrika – 2018. 03 – Beco – Zebra – 10 – Afrika – 2017. 04 – Coco – Ara – 5 – Sydamerika – 2016. Det finns 3 underordnade tabeller motsvarande kolumnen livsmiljö. Asientabellen har en post för Bob. Afrikatábellen har två poster för Sunny och Beco. Sydamerikatabellen har en post för Coco.

  • Överordnad tabell
    • Synlig i databasens gränssnitt
    • Skriv frågor mot denna
  • Underordnade tabeller
    • Inte synliga i databasens gränssnitt
    • Frågor söker i dessa
Förbättra frågeprestanda i PostgreSQL

Partitionsstruktur

En överordnad tabell med djurparkens djur och fyra poster som visar id, namn, art, livsmiljö och år mottaget. 01 – Bob – Panda – ålder – livsmiljö – mottaget. 02 – Sunny – Zebra – 3 – Afrika – 2018. 03 – Beco – Zebra – 10 – Afrika – 2017. 04 – Coco – Ara – 5 – Sydamerika – 2016. Det finns 3 underordnade tabeller motsvarande kolumnen livsmiljö. Asientabellen har en post för Bob. Afrikatábellen har två poster för Sunny och Beco. Sydamerikatabellen har en post för Coco. Afrikatábellen är markerad med rött.

SELECT species
FROM zoo_animals
WHERE habitat = 'Africa'
Förbättra frågeprestanda i PostgreSQL

Översikt över partitioner

Vad

  • Uppdelning av en tabell i flera mindre tabeller

Varför

  • Flexibel lagring
  • Snabbare frågor

Var

  • Vanliga filterkolumner
    • Datum, plats
Förbättra frågeprestanda i PostgreSQL

Frågebedömning med partitioner

Frågeoptimeraren

Flera kockar runt en stor gryta

EXPLAIN
SELECT species
FROM zoo_animals
WHERE habitat = 'Africa'

Frågeplan

Seq Scan on zoo_animals  (cost=0.00..
17.70 rows=2 width=182)
  Filter: (state_code = 15)
  • Kostnads- (tids-) estimat
Förbättra frågeprestanda i PostgreSQL

Nu kör vi en övning!

Förbättra frågeprestanda i PostgreSQL

Preparing Video For Download...