Kolumnorienterad lagring

Förbättra frågeprestanda i PostgreSQL

Amy McCarty

Instructor

Kolumnorienterad

Kolumnorienterad lagring

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

Lagras som

Två tabeller. Den första tabellen är en lista med id och art. 01 - panda. 02 - zebra. 03 - zebra. 04 - koala. Den andra tabellen är en lista med id och ålder. 01 - 2. 02 - 3. 03 - 10. 04 - 5.

Förbättra frågeprestanda i PostgreSQL

Analysfokus – ett bra val

Egenskaper hos kolumnorienterad lagring

  • En kolumn lagras på samma plats
  • Snabb att returnera alla rader
  • Snabb för kolumnberäkningar

Analysfokus

  • Antal, medelvärden, beräkningar
  • Rapportering
  • Kolumnaggregering

Lagras som

Tre tabeller. Den första tabellen är en lista med id och namn. 01 - Bob. 02 - Sunny. 03 - Beco. 04 - Coco. Den andra tabellen är en lista med id och art. 01 - panda. 02 - zebra. 03 - zebra. 04 - koala. Den tredje tabellen är en lista med id och ålder. 01 - 2. 02 - 3. 03 - 10. 04 - 5.

Förbättra frågeprestanda i PostgreSQL

Transaktionsfokus – ett dåligt val

Relationer mellan rader bevaras

  • Långsam att returnera alla kolumner
  • Långsam att läsa in data

Transaktionsfokus

  • Snabb infogning och borttagning av poster

Lagras som

Tre tabeller. Den första tabellen är en lista med id och namn. 01 - Bob. 02 - Sunny. 03 - Beco. 04 - Coco. Den andra tabellen är en lista med id och art. 01 - panda. 02 - zebra. 03 - zebra. 04 - koala. Den tredje tabellen är en lista med id och ålder. 01 - 2. 02 - 3. 03 - 10. 04 - 5.

Förbättra frågeprestanda i PostgreSQL

Databasexempel

 

Postgres Citus Data, Greenplum, Amazon Redshift
MySQL MariaDB
Oracle Oracle In-Memory Cloud Store
Clickhouse, Apache Druid, CrateDB
Förbättra frågeprestanda i PostgreSQL

Informationsschema

Minska antalet kolumner

  • Använd SELECT * sparsamt
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_catalog = 'schema_name'
AND table_name = 'zoo_animals'
column_name data_type
id integer
name text
species text
Förbättra frågeprestanda i PostgreSQL

Informationsschema

Minska antalet kolumner

  • Använd SELECT * sparsamt
  • Använd informationsschemat
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_catalog = 'schema_name'
AND table_name = 'zoo_animals'
column_name data_type
id integer
name text
species text
Förbättra frågeprestanda i PostgreSQL

Skriv dina frågor

 

  • Undersök varje kolumn i en egen fråga
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
-- Structure for column oriented
SELECT MIN(age), MAX(age)
FROM zoo_animals
WHERE species = 'zebra'
-- Structure for row-oriented
SELECT *
FROM zoo_animals
WHERE species = 'zebra'
ORDER BY age
Förbättra frågeprestanda i PostgreSQL

Nu kör vi en övning!

Förbättra frågeprestanda i PostgreSQL

Preparing Video For Download...