PostgreSQL Performance

Onderhoud

Goed onderhoud is voor elke database belangrijk, en dus ook voor PostgreSQL. Het zorgt er onder andere voor dat je datafiles compact blijven en dus sneller benaderbaar.

Autovacuum

Gebruik autovacuum om de datafiles automatisch op te schonen wanneer ze een bepaalde graad van vervuiling bereiken.

VACUUM FULL

Vacuum schoont de datafiles op, maar geeft de opgeschoonde ruimte niet terug aan het operating system. Wanneer dat wel is gewenst, zul je een VACUUM FULL moeten uitvoeren. Ga hier spaarzaam mee om, VACUUM FULL vereist een table lock en kan dus andere sessies in de weg zitten.

REINDEX

Het is mogelijk dat indexen vervuild raken, met REINDEX kun je bestaande indexen opnieuw laten aanmaken. Dat kost tijd, ga hier dus spaarzaam mee om.

ANALYZE

Na groot onderhoud zul je altijd een ANALYZE moeten uitvoeren, daarmee breng je de database op de hoogte van de nieuwe stand van zaken. Autovacuum heeft ook een autoanalyze, dat gaat dus vanzelf goed.

Freespacemap

De freespacemap houdt bij waar de herbruikbare gaten in de datafiles zitten. Als de freespacemap niet groot genoeg is wordt de database gedwongen om nieuwe records aan het eind van de datafiles te schrijven en worden je files groter en trager.

Sinds versie 8.4 hoef je dit niet zelf meer te configureren, dat wordt automatisch gedaan. De parameters max_fsm_pages en max_fsm_relations zijn dan ook verdwenen uit het bestand postgresql.conf.

Wat zijn goede instellingen voor oudere versies?

Dat verschilt per toepassing en moet je echt voor jouw toepassing nakijken.

Schoon je database op d.m.v. Vaccuum en laat hem een tijde draaien onder normale belasting. Draai daarna "vacuum verbose analyze" en zie hoeveel pages er opgeschoond zijn (reclaimed) en gebruik dat aantal als benodigde freespace map.

Indexen

Wanneer een database langzaam is, dan komt vrijwel altijd doordat er geen bruikbare indexen beschikbaar zijn om een query uit te voeren. Of juist omdat er teveel indexen moeten worden bijgewerkt bij insert/update/delete queries. Indexen zijn er in verschillende smaken, je kunt ze gaan configureren en je kunt zelf bijzondere indexen installeren in PostgreSQL.

btree

standaard

hash

gist

gin

Wildspeed

Moet je apart installeren, maar is zeer de moeite waard wanneer je veel met LIKE '%...%' moet werken. Queries die ineens 400x sneller zijn, zijn geen uitzondering.

Met dank aan:

  • Oleg Bartunov <oleg@sai.msu.su>, Moscow, Moscow University, Russia
  • Teodor Sigaev <teodor@sigaev.ru>, Moscow, Moscow University,Russia
Overkoepelende artikelen:
Inloggen wachtwoord vergeten? Aanmelden
ADSL – Telfort Internet – Ziggo Alles in 1