Stocare orientată pe rânduri și partiții

Îmbunătățirea performanței interogărilor în PostgreSQL

Amy McCarty

Instructor

Tipuri de stocare în baze de date

Stocare orientată pe rânduri

  • Relația dintre coloane este păstrată

Stocare orientată pe coloane

  • Relația dintre rânduri este păstrată
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
Îmbunătățirea performanței interogărilor în PostgreSQL

Orientată pe rânduri

Stocare orientată pe rânduri

  • Relația dintre coloane este păstrată

 

id name species age habitat received
01 Bob panda 2 Asia 2018
Îmbunătățirea performanței interogărilor în PostgreSQL

Orientată pe coloane

Stocare orientată pe coloane

  • Relația dintre rânduri este păstrată  

Două tabele. Primul tabel conține o listă de id-uri și nume. 01 - Bob. 02 - Sunny. 03 - Beco. 04 - Coco. Al doilea tabel conține aceleași id-uri cu o listă de specii. 01 - panda. 02 - zebra. 03 - zebra. 04 - koala.

Îmbunătățirea performanței interogărilor în PostgreSQL

Stocare orientată pe rânduri

 

  • Un rând stocat în aceeași locație
  • Rapid pentru adăugarea sau ștergerea înregistrărilor complete
  • Eficient pentru returnarea tuturor coloanelor
    • Lent pentru returnarea tuturor rândurilor
Îmbunătățirea performanței interogărilor în PostgreSQL

Reducerea rândurilor

Reducerea numărului de rânduri

  • WHERE filter
  • INNER JOIN
  • DISTINCT
  • LIMIT
Îmbunătățirea performanței interogărilor în PostgreSQL

Metode pentru baze de date orientate pe rânduri

Partiții

  • Metodă de împărțire a unui tabel (părinte) în mai multe tabele mai mici (copii)

Indexuri

  • Metodă de creare a cheilor de coloană sortate pentru a îmbunătăți căutarea

 

Utilizarea partițiilor și indexurilor

  • Necesită configurare și întreținere
  • Existența se află de la administratorul bazei de date sau din documentație
Îmbunătățirea performanței interogărilor în PostgreSQL

Structura partițiilor

Un tabel părinte cu animale de grădină zoologică, cu patru înregistrări care conțin id, nume, specie, habitat și anul primirii. 01 - Bob - Panda - vârstă - habitat - primit. 02 - Sunny - Zebra - 3 - Africa - 2018. 03 - Beco - Zebra - 10 - Africa - 2017. 04 - Coco - Macaw - 5 - America de Sud - 2016. Există 3 tabele copii corespunzătoare coloanei habitat. Tabelul Asia are o înregistrare pentru Bob. Tabelul Africa are două înregistrări pentru Sunny și Beco. Tabelul America de Sud are o înregistrare pentru Coco.

  • Tabelul părinte
    • Vizibil în interfața bazei de date
    • Se scriu interogări
  • Tabele copii
    • Nu sunt vizibile în interfața bazei de date
    • Interogările caută în ele
Îmbunătățirea performanței interogărilor în PostgreSQL

Structura partițiilor

Un tabel părinte cu animale de grădină zoologică, cu patru înregistrări care conțin id, nume, specie, habitat și anul primirii. 01 - Bob - Panda - vârstă - habitat - primit. 02 - Sunny - Zebra - 3 - Africa - 2018. 03 - Beco - Zebra - 10 - Africa - 2017. 04 - Coco - Macaw - 5 - America de Sud - 2016. Există 3 tabele copii corespunzătoare coloanei habitat. Tabelul Asia are o înregistrare pentru Bob. Tabelul Africa are două înregistrări pentru Sunny și Beco. Tabelul America de Sud are o înregistrare pentru Coco. Tabelul Africa este evidențiat cu roșu.

SELECT species
FROM zoo_animals
WHERE habitat = 'Africa'
Îmbunătățirea performanței interogărilor în PostgreSQL

Prezentare generală a partițiilor

Ce

  • Împărțirea unui tabel în mai multe tabele mai mici

De ce

  • Flexibilitate în stocare
  • Interogări mai rapide

Unde

  • Coloane frecvent filtrate
    • Dată, locație
Îmbunătățirea performanței interogărilor în PostgreSQL

Evaluarea interogărilor cu partiții

Planificatorul de interogări

Mai mulți bucătari în jurul unui cazan mare

EXPLAIN
SELECT species
FROM zoo_animals
WHERE habitat = 'Africa'

Planul de interogare

Seq Scan on zoo_animals  (cost=0.00..
17.70 rows=2 width=182)
  Filter: (state_code = 15)
  • Estimări de cost (timp)
Îmbunătățirea performanței interogărilor în PostgreSQL

Să exersăm!

Îmbunătățirea performanței interogărilor în PostgreSQL

Preparing Video For Download...