Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Keskusmuistitietokantahakemistot Vilho Raatikka Solid Information Technology Tietokannat NYT! Helsinki, 15.11.2005.

Samankaltaiset esitykset


Esitys aiheesta: "Keskusmuistitietokantahakemistot Vilho Raatikka Solid Information Technology Tietokannat NYT! Helsinki, 15.11.2005."— Esityksen transkriptio:

1 Keskusmuistitietokantahakemistot Vilho Raatikka Solid Information Technology http://www.solidtech.com Tietokannat NYT! Helsinki, 15.11.2005

2 2 Tietokoneen muisti on hierarkinen Prosessorin ulkoinen välimuisti (L2 cache) Keskusmuisti Kovalevy Prosessorin sisäinen välimuisti (L1 cache) 16kB data 16kB instructions 512kB unified x 32 1GB x 2048 320GB x 320

3 3 Tiedon siirtyminen muistihierarkiassa Saantiaika 10 ms Saantiaika 100 ns Saantiaika 10 ns L2 cache rivin koko: 16-128 B Keskusmuisti lohko 16-128B Kovalevysivu 2-64KB Pahin pullonkaula L1 cache rivin koko: 16-128 B Saantiaika 1 ns x 10 x 100 000

4 4 Keskusmuistitietokannan tiedonsiirto Saantiaika 10 ms Saantiaika 100 ns Saantiaika 10 ns L2 cache rivin koko: 16-128 B Tietokanta, indeksit, lokipuskuri Lokitietueet Pahin pullonkaula L1 cache rivin koko: 16-128 B Saantiaika 1 ns x 10 x 100 000

5 5 Yhteenveto Operaatioiden muistinoudot kannattaa minimoida. Lokitietueiden tallennus on hitain MMDB-operaatio. Muistinoutoihin kuluva aika voi hallita MMDB:n suorituskykyä. CPU:n suorituskyky tuplaantuu joka 3. vuosi. Muisti nopeutuu ~15% vuodessa.

6 6 B-puun nerokkuus Levypohjainen B-puu Oletukset: – ryvästetty indeksi (clustered index) – tietokantasivun koko vastaa levylohkoa, esim. 8 KB – avaimen ja osoittimen koko on 32bit järjestelmässä 4B Lehtitason solmu 22 456596 … Solmun koko: 8 KB vähintään 512 avain-osoitin -paria (50% täyttöaste) 8K data- sivu 8K data- sivu 8K data- sivu 8K data- sivu … tuhat sivua = 8 MB tietokanta Montako hipaisua? Entä jos tietokannan koko kasvaa tuhatkertaiseksi? 8K data- sivu h= log 512 n Puun korkeus: arvo osoitin (avaimet  arvo)

7 7 Miksi B-puu käyttäytyy huonosti keskusmuistissa? Avaimen löytäminen kahdeksan kilotavun solmusta voi vaatia 8192/32=256:n välimuistirivin siirtämisen ensin keskusmuistista L2:een, L1:een ja lopulta rekistereihin. Peräkkäin tapahtuvan siirron kustannukset ovat 256*111ns=28416ns. Solmun koko vastaa kovalevyn lohkoa jotta kovalevyllä olevan tiedon käsittelykustannukset saataisiin minimoitua. Tavoite on että alkion haku solmusta maksaa saman verran paikasta riippumatta.

8 8 B-puuhaun muistinoudot ja kesto Levyoptimoitu B-puu: 1023 arvoa, 1024 osoitinta h= log 1024 n esim. log 512 1M = 3 Avaimen luku vaatii siten enintään 3*256=768:n välimuistirivin lukemisen. Niiden siirto läpi muistihierarkian kestää enintään 768*111=85248ns.

9 9 Binääripuut keskusmuistitietokannoissa AVL-puun huono puoli on sen tuhlaileva muistinkäyttö: se käyttää vain muutaman tavun välimuistirivistä. 22 AVL-puun solmu arvo yläosoitin oikea osoitin vasen osoitin Puun korkeus: h= log 2 n 80-luvulla havaittiin että AVL-puu on tehokas keskusmuistissa. Päivitykset vaativat usein vain muutaman osoittimen uudelleen kirjoituksen ja lukeminen rasitti CPU:ta hyvin vähän. Tiedonsaannin ajateltiin olevan yhtä kallista muistipaikasta riippumatta.

10 10 T-puu on taloudellisempi AVL-puu T-puun solmu sisältää joukon solmuja mutta on rakenteeltaan kuten binääripuu [LeCa86]. Sen maksimikorkeus on silti kaksikantainen logaritmi avainten lukumäärästä == paljon suurempi kuin B-puussa. Solmun koko esim. 128B, johon mahtuu 116/4=29 avainta 22456596 … 33 47 95 oikea osoitin vasen osoitin (osoittimet riveihin puuttuvat kuvasta) Puun korkeus: h<< log 2 n Muistioptimoitu T-puu: 29 arvoa, 2 osoitinta. Solmun luku binäärihaulla vaatii enintään 3 välimuistirivin kopioimisen. h= log1024n esim. log 2 1M = 20 Avaimen luku vaatii siten enintään 20*3=60:n välimuistirivin lukemisen. Niiden siirto läpi muistihierarkian kestää enintään 60*111=6660ns.

11 11 Ovatko kaikki muistiviittaukset saman hintaisia? Tietoa siirretään muistista välimuistiin välimuistirivin verran kerrallaan 32 B muistilohkot (rivit) keskusmuisti L2-välimuisti Direct-mapped cache (jokaiselle muistirivillä on välimuistissa vakiopaikka) Päätelmät: Samalle välimuistiriville kuvautuvien alkioiden lukeminen on nopeampaa jolloin tiedon paikallisuuden (data locality) merkitys korostuu Taulukot ovat tiiviimpiä ja siten tehokkampia kuin osoitinrakenteet. Tiiviys tehostaa lukemista. Taulukot mahdollistavat ennakoivat luvut (prefetching). konflikti

12 12 Johtopäätökset Samalle välimuistiriville kuvautuvien alkioiden lukeminen on nopeampaa jolloin tiedon paikallisuuden (data locality) merkitys korostuu Taulukot tarjoavat paremman tiedon paikallisuuden. Taulukot mahdollistavat ennakoivat luvut (prefetching).

13 13 Onko B-puu sittenkin hyvä keskusmuistissa? B-puun solmut voidaan ryhmitellä fyysisesti: isäsolmut tiivistyvät kun lapsiosoittimet voidaan yhtä lukuunottamatta poistaa. Esimerkki: CSB-puu (Cache-Sensitive B-tree) [RR00] 22456596 33 47 95 224565 Asetetaan solmun koko vastaamaan välimuistiriviä, esim. 32B CSB-puu: 7 arvoa, 1 osoitin h= log 4 n (50% täyttöaste) esim log 4 1M = 10 2233 CC-node node group (solmujen taulukko) solmun vakio koko = 32 B positio = solmutaulukon indeksi Myös muita tähän soveltuvia tiivistyskeinoja on olemassa. 1 2 3 4 5 6 7 0 1

14 14 Muisti- ja välimuistioptimoinnin ero Muistioptimoitu B-puu: 3 arvoa, 4 osoitinta. Solmun luku vaatii 1 välimuistirivin kopioimisen. h= log 4 n esim. Log 2 1M = 20 Avaimen luku vaatii siten enintään 20*1=20:n välimuistirivin lukemisen. Niiden siirto läpi muistihierarkian kestää enintään 20*111=2220ns. Välimuistioptimoitu B-puu: 7 arvoa, 1 osoitin. Solmun luku vaatii 1 välimuistirivin kopioimisen. h= log 4 n esim. Log 4 1M = 10 Avaimen luku vaatii siten enintään 10*1=10:n välimuistirivin lukemisen. Niiden siirto läpi muistihierarkian kestää enintään 10*111=1110ns.

15 15 Trie-muisti (Trie Memory) Tree: jako perustuu avainarvoihin Trie: jako perustuu kirjoitusmerkkeihin (esim. numerot) [Fre60] Esim. 4-haarautuva trie, avaimen pituus = 32B Jaetaan 16 osaan - f (fan-out) = 4 L (pituus) = 32 Trie:n maksimikorkeus: h = L/ (log 2 f) = 16 11 00 01 10 11 1110 10 Path compression (solmu ohitetaan, ellei ole valintaa) Width compression (vain tarpeelliset osoittimet) 01 tietue (row) 01 Fast termination (ei ole muita arvoja, joissa etuliite ’0101’)

16 16 Trie pitää pitää matalana Kasvatetaan solmun haarautuvuus 256:een. Hillitään solmun kasvua aggressiivisella leveyspakkauksella (”W”). Malli yksinkertainen: 256 bitin kartta jossa n:nnen osoittimen olemassaoloa merkitään asettamalla n:s bitti pystyyn. Rakenteen korkeus on enintään (vain) pisimmän avaimen pituu tavuina, solmun koko voi kasvaa 1056 tavuun ja alkion haku vaatii käytännössä kahden välimuistirivin lukemisen. 1000…11…1 Trie:n mielekkyys perustuu tiivistyvyyteen ja tehokkaaseen alkion paikantamiseen. 0 12 13 255 Pakattu trie: L (avaimen pituus bitteinä) = 32 ja f (haarautumisaste) = 256. Solmun luku vaatii enintään 2 välimuistirivin kopioimisen. Rakenteeseen mahtuu 2 32 avainta. h= L/ (log 2 f) = 4 Avaimen luku vaatii siten enintään 4*2=8:n välimuistirivin lukemisen. Niiden siirto läpi muistihierarkian kestää enintään 8*111=888ns.

17 17 Eri hakemistojen hakutehokkuusvertailu

18 Hakemiston tehokkuus riippuu luku- ja kirjoitusoperaatioiden koskemien välimuistirivien määrästä. Matala rakenne ja pienet solmut takaavat tehokkaat operaatiot. Iso solmu on pienempi paha kuin lapsisolmu. Yhteenveto www.solidtech.com


Lataa ppt "Keskusmuistitietokantahakemistot Vilho Raatikka Solid Information Technology Tietokannat NYT! Helsinki, 15.11.2005."

Samankaltaiset esitykset


Iklan oleh Google