db.dobo.sk

Postgres – všetko, čo si chcel vedieť, ale bál sa spýtať svojho seniora, aby si nevypadal ako jelito 16. Indexy.

bez komentára

Prehľad a komentár k indexom v Postgrese.

Všeobecný prehľad o tom, čo je index je dobrý u Pavla Stěhuleho na rootu. Operuje síce len z B-TREE indexom, ale pre obecný prehľad to stačí. Ďalšie dobré zdroje z netu, z ktorých som namudroval:

Ross Leishman o indexoch, deep dive. Je to síce o Oraclu, ale naprosto perfektné na pochopenie princípov.

 

Indexy všeobecne:

Index je metódou, ako sa bude pristupovať k datám (k heapu). aktuálne existuje 6 typov indexov: B-tree, hash, GIN, GIST, SP-GIST, BRIN. Defaultne sa pri vytváraní indexu bytvorí B-tree, pokiaľ nie je explicitne uvedené inak.

Index obecne zvyšuje rýchlosť pri SELECToch, ale znižuje pri INSERToch a UPDATEoch. Tzn. nie vždy má zmysel. Nemá zmysel pri malých tabuľkách (tak do 10 000 recordov) a pokiaľ tabuľky obsahujú veľa NULL záznamov.

B-tree

  • základný typ indexu, prakticky u všetkých druhov DB. Proste register v knihe.
  • nie je to binary search a “B” neznamená balanced, aj keď B-tree je vždy balanced. :)
  • root – branches – leaves; Len leaves obsahujú odkazy na heap/records.
  • v skutočnosti sú pomerne plytké, tak 4-5 úrovní.
  • keď je index plný a je nutné pridať ďalší level, tak sa pridá “nad rootom” – jasné, ak by sa pridával na leves, tak by prestal byť balancovaný

GIST

Používsa sa v PostGISe. Pritorové fičúry sa nedajú indexovať priamo a preto je to indexácia obálok (bounding boxov). Originálna štúdia R-tree indexovania od Antonina Gutmana v r. 198č je tu (a full text tu).

píše: ďobo

February 24th, 2023 o 6:16 pm

chlievik: postgresql

okomentuj