Řádkové úložiště a oddíly

Optimalizace výkonu dotazů v PostgreSQL

Amy McCarty

Instructor

Typy úložiště databáze

Řádkové úložiště

  • Zachovává vztah mezi sloupci

Sloupcové úložiště

  • Zachovává vztah mezi řádky
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
Optimalizace výkonu dotazů v PostgreSQL

Řádkově orientované

Řádkové úložiště

  • Zachovává vztah mezi sloupci

 

id name species age habitat received
01 Bob panda 2 Asia 2018
Optimalizace výkonu dotazů v PostgreSQL

Sloupcově orientované

Sloupcové úložiště

  • Zachovává vztah mezi řádky  

Dvě tabulky. První tabulka obsahuje seznam id a jmen. 01 - Bob. 02 - Sunny. 03 - Beco. 04 - Coco. Druhá tabulka obsahuje stejná id se seznamem druhů. 01 - panda. 02 - zebra. 03 - zebra. 04 - koala.

Optimalizace výkonu dotazů v PostgreSQL

Řádkové úložiště

 

  • Jeden řádek uložen na stejném místě
  • Rychlé přidávání nebo mazání celých záznamů
  • Rychlé vrácení všech sloupců
    • Pomalé vrácení všech řádků
Optimalizace výkonu dotazů v PostgreSQL

Redukce řádků

Snížení počtu řádků

  • WHERE filtr
  • INNER JOIN
  • DISTINCT
  • LIMIT
Optimalizace výkonu dotazů v PostgreSQL

Metody řádkové databáze

Oddíly

  • Metoda rozdělení jedné (nadřazené) tabulky na více menších (podřazených) tabulek

Indexy

  • Metoda vytváření seřazených klíčů sloupců pro zlepšení vyhledávání

 

Použití oddílů a indexů

  • Vyžadují nastavení a údržbu
  • Existence je známa od správce databáze nebo z dokumentace
Optimalizace výkonu dotazů v PostgreSQL

Struktura oddílů

Nadřazená tabulka zvířat ze zoo se čtyřmi záznamy obsahujícími id, jméno, druh, biotop a rok přijetí. 01 - Bob - Panda - věk - biotop - přijato. 02 - Sunny - Zebra - 3 - Afrika - 2018. 03 - Beco - Zebra - 10 - Afrika - 2017. 04 - Coco - Ara - 5 - Jižní Amerika - 2016. K dispozici jsou 3 podřazené tabulky odpovídající sloupcům biotopu. Tabulka Asie obsahuje jeden záznam pro Boba. Tabulka Afrika obsahuje dva záznamy pro Sunny a Beco. Tabulka Jižní Amerika obsahuje jeden záznam pro Coco.

  • Nadřazená tabulka
    • Viditelná v rozhraní databáze
    • Zápis dotazů
  • Podřazené tabulky
    • Nejsou viditelné v rozhraní databáze
    • Prohledávány dotazy
Optimalizace výkonu dotazů v PostgreSQL

Struktura oddílů

Nadřazená tabulka zvířat ze zoo se čtyřmi záznamy obsahujícími id, jméno, druh, biotop a rok přijetí. 01 - Bob - Panda - věk - biotop - přijato. 02 - Sunny - Zebra - 3 - Afrika - 2018. 03 - Beco - Zebra - 10 - Afrika - 2017. 04 - Coco - Ara - 5 - Jižní Amerika - 2016. K dispozici jsou 3 podřazené tabulky odpovídající sloupcům biotopu. Tabulka Asie obsahuje jeden záznam pro Boba. Tabulka Afrika obsahuje dva záznamy pro Sunny a Beco. Tabulka Jižní Amerika obsahuje jeden záznam pro Coco. Tabulka Afrika je zvýrazněna červeně.

SELECT species
FROM zoo_animals
WHERE habitat = 'Africa'
Optimalizace výkonu dotazů v PostgreSQL

Přehled oddílů

Co

  • Rozdělení jedné tabulky na více menších tabulek

Proč

  • Flexibilita úložiště
  • Rychlejší dotazy

Kde

  • Často filtrované sloupce
    • Datum, umístění
Optimalizace výkonu dotazů v PostgreSQL

Posouzení dotazu na oddíly

Plánovač dotazů

Více kuchařů kolem velkého hrnce

EXPLAIN
SELECT species
FROM zoo_animals
WHERE habitat = 'Africa'

Plán dotazu

Seq Scan on zoo_animals  (cost=0.00..
17.70 rows=2 width=182)
  Filter: (state_code = 15)
  • Odhady nákladů (času)
Optimalizace výkonu dotazů v PostgreSQL

Lass uns üben!

Optimalizace výkonu dotazů v PostgreSQL

Preparing Video For Download...