Przechowywanie wierszowe i partycje

Optymalizacja wydajności zapytań w PostgreSQL

Amy McCarty

Instructor

Typy przechowywania danych

Przechowywanie wierszowe

  • Zachowana relacja między kolumnami

Przechowywanie kolumnowe

  • Zachowana relacja między wierszami
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
Optymalizacja wydajności zapytań w PostgreSQL

Wierszowe

Przechowywanie wierszowe

  • Zachowana relacja między kolumnami

 

id name species age habitat received
01 Bob panda 2 Asia 2018
Optymalizacja wydajności zapytań w PostgreSQL

Kolumnowe

Przechowywanie kolumnowe

  • Zachowana relacja między wierszami  

Dwie tabele. Pierwsza to lista identyfikatorów i imion. 01 - Bob. 02 - Sunny. 03 - Beco. 04 - Coco. Druga tabela zawiera te same identyfikatory z listą gatunków. 01 - panda. 02 - zebra. 03 - zebra. 04 - koala.

Optymalizacja wydajności zapytań w PostgreSQL

Przechowywanie wierszowe

 

  • Jeden wiersz przechowywany w tym samym miejscu
  • Szybkie dołączanie lub usuwanie całych rekordów
  • Szybki zwrot wszystkich kolumn
    • Wolny zwrot wszystkich wierszy
Optymalizacja wydajności zapytań w PostgreSQL

Zmniejszanie liczby wierszy

Zmniejszanie liczby wierszy

  • Filtr WHERE
  • INNER JOIN
  • DISTINCT
  • LIMIT
Optymalizacja wydajności zapytań w PostgreSQL

Metody baz wierszowych

Partycje

  • Metoda podziału jednej tabeli (nadrzędnej) na wiele mniejszych tabel (potomnych)

Indeksy

  • Metoda tworzenia posortowanych kluczy kolumn w celu przyspieszenia wyszukiwania

 

Stosowanie partycji i indeksów

  • Wymagają konfiguracji i utrzymania
  • Informacje o nich można uzyskać od administratora bazy danych lub z dokumentacji
Optymalizacja wydajności zapytań w PostgreSQL

Struktura partycji

Tabela nadrzędna zwierząt zoo z czterema rekordami: id, imię, gatunek, środowisko i rok przyjęcia. 01 - Bob - Panda - wiek - środowisko - przyjęcie. 02 - Sunny - Zebra - 3 - Afryka - 2018. 03 - Beco - Zebra - 10 - Afryka - 2017. 04 - Coco - Ara - 5 - Ameryka Południowa - 2016. Trzy tabele potomne odpowiadają kolumnie środowisko. Tabela Azja zawiera jeden rekord dla Boba. Tabela Afryka zawiera dwa rekordy dla Sunny i Beco. Tabela Ameryka Południowa zawiera jeden rekord dla Coco.

  • Tabela nadrzędna
    • Widoczna w interfejsie bazy danych
    • Używana do pisania zapytań
  • Tabele potomne
    • Niewidoczne w interfejsie bazy danych
    • Przeszukiwane przez zapytania
Optymalizacja wydajności zapytań w PostgreSQL

Struktura partycji

Tabela nadrzędna zwierząt zoo z czterema rekordami: id, imię, gatunek, środowisko i rok przyjęcia. 01 - Bob - Panda - wiek - środowisko - przyjęcie. 02 - Sunny - Zebra - 3 - Afryka - 2018. 03 - Beco - Zebra - 10 - Afryka - 2017. 04 - Coco - Ara - 5 - Ameryka Południowa - 2016. Trzy tabele potomne odpowiadają kolumnie środowisko. Tabela Azja zawiera jeden rekord dla Boba. Tabela Afryka zawiera dwa rekordy dla Sunny i Beco. Tabela Ameryka Południowa zawiera jeden rekord dla Coco. Tabela Afryka jest zaznaczona na czerwono.

SELECT species
FROM zoo_animals
WHERE habitat = 'Africa'
Optymalizacja wydajności zapytań w PostgreSQL

Przegląd partycji

Co to jest

  • Podział jednej tabeli na wiele mniejszych tabel

Dlaczego

  • Elastyczność przechowywania
  • Szybsze zapytania

Gdzie

  • Często filtrowane kolumny
    • Data, lokalizacja
Optymalizacja wydajności zapytań w PostgreSQL

Ocena zapytania z partycjami

Planista zapytań

Wielu kucharzy wokół dużego garnka

EXPLAIN
SELECT species
FROM zoo_animals
WHERE habitat = 'Africa'

Plan zapytania

Seq Scan on zoo_animals  (cost=0.00..
17.70 rows=2 width=182)
  Filter: (state_code = 15)
  • Szacowanie kosztu (czasu)
Optymalizacja wydajności zapytań w PostgreSQL

Czas na ćwiczenia!

Optymalizacja wydajności zapytań w PostgreSQL

Preparing Video For Download...