Sloupcové úložiště

Optimalizace výkonu dotazů v PostgreSQL

Amy McCarty

Instructor

Sloupcové uspořádání

Sloupcové úložiště

  • Vztahy mezi řádky jsou zachovány
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

Uloženo jako

Dvě tabulky. První tabulka obsahuje id a druh. 01 - panda. 02 - zebra. 03 - zebra. 04 - koala. Druhá tabulka obsahuje id a věk. 01 - 2. 02 - 3. 03 - 10. 04 - 5.

Optimalizace výkonu dotazů v PostgreSQL

Analytické využití – vhodná volba

Vlastnosti sloupcového úložiště

  • Jeden sloupec uložen na jednom místě
  • Rychlé vrácení všech řádků
  • Rychlé výpočty nad sloupci

Analytické využití

  • Počty, průměry, výpočty
  • Reportování
  • Agregace sloupců

Uloženo jako

Tři tabulky. První obsahuje id a jména. 01 - Bob. 02 - Sunny. 03 - Beco. 04 - Coco. Druhá obsahuje id a druh. 01 - panda. 02 - zebra. 03 - zebra. 04 - koala. Třetí obsahuje id a věk. 01 - 2. 02 - 3. 03 - 10. 04 - 5.

Optimalizace výkonu dotazů v PostgreSQL

Transakční využití – nevhodná volba

Vztahy řádků jsou zachovány

  • Pomalé vrácení všech sloupců
  • Pomalé načítání dat

Transakční využití

  • Rychlé vkládání a mazání záznamů

Uloženo jako

Tři tabulky. První obsahuje id a jména. 01 - Bob. 02 - Sunny. 03 - Beco. 04 - Coco. Druhá obsahuje id a druh. 01 - panda. 02 - zebra. 03 - zebra. 04 - koala. Třetí obsahuje id a věk. 01 - 2. 02 - 3. 03 - 10. 04 - 5.

Optimalizace výkonu dotazů v PostgreSQL

Příklady databází

 

Postgres Citus Data, Greenplum, Amazon Redshift
MySQL MariaDB
Oracle Oracle In-Memory Cloud Store
Clickhouse, Apache Druid, CrateDB
Optimalizace výkonu dotazů v PostgreSQL

Informační schéma

Omezení počtu sloupců

  • SELECT * používejte střídmě
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
Optimalizace výkonu dotazů v PostgreSQL

Informační schéma

Omezení počtu sloupců

  • SELECT * používejte střídmě
  • Využijte informační schéma
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
Optimalizace výkonu dotazů v PostgreSQL

Psaní dotazů

 

  • Každý sloupec zkoumejte samostatným dotazem
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
Optimalizace výkonu dotazů v PostgreSQL

Pojďme si procvičit!

Optimalizace výkonu dotazů v PostgreSQL

Preparing Video For Download...