lauantai 19. joulukuuta 2015

PostgreSQL 9.0 High Performance

Gregory Smith, PostgreSQL 9.0 High Performance. Packt Publishing, Birmingham, UK, 2010.

Packt Publishing -kirjat ovat olleet laadultaan epätasaisia niiltä osin, kuin olen niihin perehtynyt, vaikka kirjat käyvät läpi jonkinlaisen vertaisarvioinnin. Tietokanta-asiantuntijan Gregory Smith Postgres-tietokannan suorituskykyyn pureutuva PostgreSQL 9.0 High Performance (2010) on kuitenkin kustantamon niitä parempia teoksia. Teos on tosin jo hieman vanhentunut, sillä Postgresin, eli ammattikielellä "Possun", betaversio 9.5 julkaistiin viime lokakuussa. Suorituskyvyn mittaamisesta ei tämän avoimen lähdekoodin tietokannasta ole tuoreempaa teosta, mutta toisaalta perusasiat eivät muutu kovin nopeasti.

Smithin kirja on käytännön opas suorituskyvyn mittaamiseen, ja teoriaa siinä on hyvin vähän. Tietokannan ylläpito edellyttää jatkuvaa seurantaa ja säännöllisiä testejä, joissa trendit sitten paljastavat erilaisia skaalautuvuuteen tai kuormaan liittyviä ongelmia. Ne tarjoavat myös pohjan, jonka varassa tietokannan asetuksiin on mahdollista tehdä muutoksia. Siinä se.

Laite- eli "rautatasolla" suorituskyky koostuu prosessorien, muistin (eli väliaikaismuistin) ja levyjen (eli pysyväismuistin) tehokkuudesta. Toki laitteilla on välimuisteja, väylänopeuksia jne., mutta Smith aloittaa näiden kolmen eri komponentin kuormitustesteillä. Levypintojen tai -hakuvarsien lukumäärää ei tarvitse kaivaa esiin, mutta levyn pyörimisnopeus on edelleen käypä muuttuja (tiedoksi niille jotka levyn hakunopeuksia ovat joskus laskeneet). Smith kuvailee eri tiedostojärjestelmien ja levyteknologioiden vaikutuksia tietokannan toimintaan. Esimerkiksi ilman patterivarmennettua kirjoituspuskuria muuten nopeisiin ja muuten erinomaisiin SSD-levyjen varmennukseen jää katve, jonka aikana sattuva järjestelmähäiriö voi kadottaa tietoa.

Tietokannan vasteajat riippuvat paitsi laiteresursseista myös kuormasta (eli muusta samanaikaisesta käytöstä) ja tavasta, jolla data on organisoitu tietokantaan. Smith tarjoilee joitain hyviä nyrkkisääntöjä tietokannan muistiasetuksiin; perusasetukset ovat alakanttiin. Sitäkin hyödyllisempää on tietokantasivun tai levylohkon elinkaaren esittely: rinnakkaisten kirjoitus- ja lukuoperaatioiden nopeuttamiseksi Postgres versioi tietokantarivejä, jotka sitten näkyvät eri transaktioille niiden tunnisteiden (so. juokseva järjestysnumero) mukaan. Aikanaan versiot tietysti vanhentuvat, joten ne pitää siivota pois. Vaikka automaattinen siivousoperaatio näin tekeekin, se ei vapauta levytilaa, vaan taulun lisäys- ja poisto-operaatiot aikaa myöten fragmentoivat taulun hallitseman levyalueen, jolloin laajat kyselyt johtavat yhä useamman levylohkon hakemiseen levyltä (mikä tarkoittaa pitkiä vasteaikoja). Sama koskee indeksejä: ne fragmentoituvat ja voivat siten muuttua jopa käyttökelvottomiksi. Niinpä aikaa myöten Postgresin suorituskyky heikkenee. Ongelma on tottakai ratkaistavissa, mutta se vaatii varsinkin suuremmissa tietokannoissa on monen tunnin huoltoikkunan. 

Tietokannan testaamiseen on lukuisia työkaluja, joista jotkin ovat vanhentuneet suhteessa nykyisiin datamääriin. Niillä saa kuitenkin säännöllisesti käytettynä luotettavia mittaustuloksia, jotka ehkä arvioivat kirjoitus- ja lukunopeuksia yläkanttiin, mutta joissa esiintyvien trendien muutokset kertovat mahdollisista ongelmista pellin alla. Sitten tietokannan lokeista voi koota joukon ongelmakyselyitä, joiden säännöllinen testaaminen tuottaa hyvää mittausdataa. Smith pureutuu myös kyselyiden optimointiin, indeksien käyttöön ja analyysidatan tulkitsemiseen. Edellytys suorituskyvyn parantamiseen on, kuten tuli ilmi, säännöllinen monitorointi ja huolto.

Smithin kirjassa on paljon hyvää. Selostukset erilaisista laitteista ja työkaluista on kirjoitettu samaan tapaan huolellisesti kuin kirjan keskeinen asia. Samat tiedot olisi koottavissa ehkä Postgresin sivuilta ja keskustelupalstoilta, mutta rakenteensa, kattavuutensa, esimerkkiensä ja argumentaationsa puolesta (sähköinen) kirja pitää julkaisumuotona edelleen pintansa nopeasti kehittyvänkin aiheen piirissä. Smith kirjoittaa siistiä insinöörikieltä, jonka sanasto on alan erikoistermejä lukuunottamatta väritöntä yleiskieltä.

Ei kommentteja:

Lähetä kommentti