Introducing 

Prezi AI.

Your new presentation assistant.

Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.

Loading…
Transcript

MVCC:

Nevýhodou řešení založeném na zamykání (tabulek, stránek, řádků) jsou možné výkonnostní problémy. Řešením je MVCC architektura, kdy namísto zamknutí modifikovaného řádku (ať operací Update nebo Delete) se provede kopie řádku - vytvoří se nová verze.

Výhody:

  • Vysoká prostupnost v silně konkurenčním prostředí.
  • Velice levný COMMIT a ROLLBACK.

Nevýhody:

  • Nutnost mazat neplatné záznamy (VACUUM).
  • Několikanásobně menší rychlost ukládání a čtení z databáze.

Základní rysy:

  • MVCC
  • referenční integrita (FOREIGN, UNIQUE, CHECK)
  • široká škála datových typů
  • vlastní objekty
  • úložné procedury v mnoha jazycích
  • indexy
  • dědičnost
  • partitioning
  • triggery
  • pravidla
  • sekvence

ACID:

  • Atomičnost - v rámci transakce se provedou všechny změny nebo žádná.
  • Konzistence - transakce zajišťují převedení dat z jednoho konzistentního stavu do druhého. Tato podmínka nemusí platit uvnitř transakce.
  • Izolace - transakce není ovlivněna souběžnými transakcemi.
  • Trvanlivost - pokud je transakce potvrzená, pak jsou změny dat trvalé a to i pokud nastane havárie systému.

Silné stránky PostgreSQL:

  • spolehlivost (kriteria ACID)
  • zajištění referenční, doménové a entitní integrity
  • bohatá podpora ANSI SQL (plná podpora příkazů SELECT, pohledy, úložné procedury, triggery)
  • vysoká propustnost v silně konkurenčním prostředí

Slabé stránky PostgreSQL:

  • menší výkon u velkého množství modifikovaných řádků
  • složitější replikace a pouze master -> slave
  • slabá podpora u webhostingů

Limity

  • maximální velikost tabulky: 32 TB
  • maximální velikost řádku: 400 GB
  • maximální velikost položky: 1 GB
  • maximální počet sloupců v tabulce: 250-1600 (v závislosti na verzi a typu)

Formáty indexů:

  • B-tree
  • Hash
  • GiST a GiN

Indexy:

  • jednoduchý index - jeden sloupec
  • složený index - více sloupců
  • částečný index - pouze nad částí tabulky
  • funkční index - nad výsledkem funkce

CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] name ON table [ USING method ]

( { column | ( expression ) } [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )

[ WITH ( storage_parameter = value [, ... ] ) ]

[ TABLESPACE tablespace ]

[ WHERE predicate ]

Parametry:

UNIQUE

CONCURRENTLY

Index Storage Parameters:

  • FILLFACTOR

Pavel Stěhule radí:

  • Indexy navrhujte pouze pro sloupce s vysokou selektivitou.
  • Kandidátem na index by měl být každý sloupec s cizím klíčem. PostgreSQL je sám nedělá.
  • Neoupžívané indexy odstrante.
  • Preferujte jednoduché indexy.
  • Indexy navrhujte pro tabulky nad cca 1000 řádků.
  • Aktualizujte statistiky po velké změně dat.
  • Pravidelně reindexujte databázi.

Indexy se drží v cache, takže první dotaz trvá déle než druhý. U jiných databází (MySQL) rozdíl nemusí být tak znatelný.

Lehký úvod do PostgreSQL

Václav Novotný

Learn more about creating dynamic, engaging presentations with Prezi