<?xml version="1.0" encoding="ISO-8859-15"?>
<rss version="2.0"><channel>
<title>tietokantojen suorituskyky</title>
<link>http://sange.fi/~atehwa/cgi-bin/piki.cgi/</link>
<description>Recent changes in tietokantojen suorituskyky</description>
<item><title>tietokantojen suorituskyky</title>
<link>http://sange.fi/~atehwa/cgi-bin/piki.cgi/tietokantojen%20suorituskyky</link>
<guid>http://sange.fi/~atehwa/cgi-bin/piki.cgi/#1410983343</guid>
<description>&lt;p&gt;&lt;ins&gt;(nettipäiväkirja 17.09.2014) Tietokantojenhan pitäisi olla 
suunniteltu tehokasta tiedon hakemista varten, vai mitä? Niissä on 
erikseen ''indeksejä'' joiden perusteella pystyy erityisen nopeasti 
etsimään juuri sellaisen tietueen, jossa tietyn kentän arvo on juuri 
jokin haluttu (esimerkiksi henkilön, jonka sukunimi on "Kakka"). Joskus 
indeksejä käytetään myös tiedon yhdistelyyn, mutta esim. 
LDAP-hakemistoissa oikeastaan ainoa, mitä niillä tehdään, on juuri 
tietyn tietueen (tai tiettyjen tietueiden) etsintä.&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Siksi minua ihmetyttää asia, jonka olen usein saanut huomata 
käytännössä: Unixin (tai Linuxin) grep-työkalulla saa usein nopeammin 
haetuksi saman asian kuin tietokannasta kyselemällä. Jos siis olen 
tekemässä monia tietokantakyselyitä, olen usein päässyt tietokannan 
hidastelusta eroon tekemällä ensin tekstidumpin kaikista tietokannan 
tiedoista ja sitten tekemällä ihan tavallisia tekstihakuja tästä 
dumpista.&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Miten ihmeessä tämä on mahdollista? Mille tietomäärille 
tyypillinen tietokantatoteutus on oikein suunniteltu? Jos esimerkiksi 
dumpissa oleva tietomäärä on 10-200 megatavua, grep-ratkaisu on tosi 
usein nopeampi (samalla koneella). Tiedän muutamia tyypillisiä syitä, 
miksi tietokanta saattaa skaalautua huonosti: ensinnäkin jotkin 
tietokannat yrittävät pitää liian ''paljon'' tietoa muistissa, jolloin 
tiedostoa rivi kerrallaan tutkiva grep toimii paremmin (ja jättää tilaa 
saman putkiston muille grepeille, samalla kun rinnakkaistuu nätisti 
monelle prosessorille); ja jotkin taas lähtevät oletuksesta, että 
''vain'' levyhaut vievät aikaa eikä muistin sisällä tapahtuvia 
operaatioita edes tarvitse optimoida, koska niiden ajankäyttö on niin 
minimaalista levyoperaatioihin verrattuna (Postgresin dokumentaatiosta 
sai joskus tällaisen kuvan).&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;* [merkintä: 2014-09] * [atehwa] * [kategoria: 
päiväkirjamerkintä] * [tekstimuotoinen yhteystietokanta] * [LDAP 
tietokantana] * [tekstityökalut]&lt;/ins&gt;

</description>
<pubDate>Wed, 17 Sep 2014 19:49:03 +0000</pubDate>
</item>

</channel></rss>
