Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

SQLHiA Indekser. SQLHiA Indekser B-TrærIndeks bygget opp som tre-struktur. Benyttes typisk på foreign key. Hash-tabellerNøkkel-tranformering. Benyttes.

Liknende presentasjoner


Presentasjon om: "SQLHiA Indekser. SQLHiA Indekser B-TrærIndeks bygget opp som tre-struktur. Benyttes typisk på foreign key. Hash-tabellerNøkkel-tranformering. Benyttes."— Utskrift av presentasjonen:

1 SQLHiA Indekser

2 SQLHiA Indekser B-TrærIndeks bygget opp som tre-struktur. Benyttes typisk på foreign key. Hash-tabellerNøkkel-tranformering. Benyttes typisk på primary key (ID). Clustered Index: Bestemmer fysisk rekkefølge på data i database-tabeller. Kun en clustered index pr tabell. Må alltid lages før non-clustered index. Må alltid lages før data plasseres i tabellen.

3 SQLHiA Clustered Index / Non-Clustered Index Index Data ClusteredNon-Clustered

4 SQLHiA B-Trær Et B-Tre av orden m er definert ved følgende: - Roten er enten et løv eller har mellom 2 og m barn. - Alle ikke-løv (evnt. bortsett fra roten) har mellom [m/2] og m barn. - Alle løv befinner seg på samme nivå. 12152531415991 214872 1-4-8-1112-1315-18-1921-2425-2631-3841-43-4648-49-5059-6872-7884-8891-92-99 84

5 SQLHiA B-trærEks:Innsetting i et B-tre av orden 4(1) 8,11,1216,1741,5222,23,3158,59,61 16:-41:58 22:-

6 SQLHiA B-trærEks:Innsetting i et B-tre av orden 4(2) 8,11,1216,17,1841,5222,23,3158,59,61 16:-41:58 22:-

7 SQLHiA B-trærEks:Innsetting i et B-tre av orden 4(3) 1,811,1241,5222,23,3158,59,61 11:1641:58 22:- 16,17,18

8 SQLHiA B-trærEks:Innsetting i et B-tre av orden 4(4) 1,811,1241,5222,23,3158,59,61 11:1641:58 22:- 16,1718,19

9 SQLHiA B-trærEks:Innsetting i et B-tre av orden 4(5) 1,811,1241,5222,23,3158,59,61 11:-41:58 16:22 16,1718,19 18:-

10 SQLHiA B-trærEks:Innsetting i et B-tre av orden 4(6) 1,811,1241,5222,2358,59,61 11:-41:58 16:22 16,1718,19 18:- 28,31

11 SQLHiA B-trærEks:Innsetting i et B-tre av orden 4(7) 1,811,1241,5222,2358,59,61 11:-58:- 16:22 16,1718,19 18:- 28,31 28:-

12 SQLHiA B-trærEks:Innsetting i et B-tre av orden 4(8) 1,811,1241,5222,2358,59,61 11:-58:- 22:- 16,1718,19 18:- 28,31 28:- 16:-41:-

13 SQLHiA Hashing / Nøkkel-transformering / Randomisering Hashing KeyTransformed Key

14 SQLHiA Nøkkel-transformering 123456789...123456789... PNr 123456789...123456789... ID PNr = IDEn-entydig sammenheng mellom PNr (Postnummer) og ID

15 SQLHiA Nøkkel-transformering 6 4 7 2 1 KundeNrTverrSum Distrikt

16 SQLHiA Nøkkel-transformering 6 4 7 2 3 KundeNrSiste siffer i tverrsummen av siste siffer i produktene 6 4 7 2 1 2 3 4 6 8 21 8 KundeNr Vekttall Produkt

17 SQLHiA Nøkkel-transformering 32191 51877 77638 PNrID PNr = IDEn-entydig sammenheng mellom PNr (Postnummer) og ID 32191 51877 77638 Ubenyttet 1 … 10000

18 SQLHiA Hash-tabeller 34 67 8 8 21 73 62 68 86 6 6 7 7 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 3 3 4 4 1 1 2 2 5 5 8 8 ID Trans 344 677 81 213 738 627 687 869 34 67

19 SQLHiA Nøkkel-tranformering-Folding Nøkkel- transformering ID = 29384756PostNr [ 1 - 1000 ] 2 9 3 8 4 7 5 6 7 6 9 4 7 7 0 + + 1

20 SQLHiA Nøkkel-transformering-Divisjon-rest-metoden Nøkkel- transformering ID = 29384756PostNr [ 1 - 1000 ] 2 9 3 8 4 7 5 6:9 9 7 1 7 5

21 SQLHiA Nøkkel-tranformering-Uheldig tranformering HSize = 10000 KeySize = 8 HValue Max = 8 * 127=1016 1016 10000 Tranformering av hvert tegn i Key til tilhørende ordinal-verdi:

22 SQLHiA Ulike nøkkel-transformeringer int Hash1(char* Key, int HSize) { return ((int)Key[0] + (int)Key[1] + (int)Key[2]) % HSize; } Transformed Key Data Key int Hash2(char* Key, int HSize) { return ((int)Key[0] + 27 * (int)Key[1] + 729 * (int)Key[2]) % HSize; }

23 SQLHiA Ulike nøkkel-transformeringer int Hash3(char* Key, int KeySize, int HSize) { int HashVal; HashVal = (int)Key[0]; for(int i = 1; i < KeySize; i++) HashVal = HashVal*32 + (int)Key[i]; HashVal = HashVal % Hsize; return HashVal; } Transformed Key Data Key

24 SQLHiA Hashing a key to a database page-SQLBase 1.Transformer symbolsk key ved å la hvert tegn bli representert ved tilhørende ASCII-verdi. Deretter transformeres denne ASCII-verdien som vist nedenfor til et såkalt binært fullword (4 bytes). 1A.Del ASCII-key inn i 4-byte enheter. 1B.XOR alle 4-byte enhetene sammen til et 4-byte resultat (ingen key-del blir borte). 1C.Utfør bitwise complement (fjerner event. bias) 2.Transformer resultatet fra 1 (binary fullword) til et heltall i side-intervallet ved å ta divisjonsresten med minste primtall som er større enn eller lik antall sider. 3.Transformer output fra 2 til en fysisk side adresse ved å legge til start side-nummer for for første rad i tabellen.

25 SQLHiA Hashing a key to a database page-SQLBase - Eks 1. 9 3 0 5 E J S M --> 57 51 48 53 69 74 83 77ASCII 1A.Key1 = 57 51 48 53 Key2 = 69 74 83 77 1B.Key1 =0011 1001 0011 0011 0011 0000 0011 0101 XORKey2 =0100 0101 0100 1010 0101 0011 0100 1101 ------------------------------------------------------------------------- =xKey =0111 1100 0111 1001 0110 0011 0111 1000=124 121 99 120 ASCII 1C.~xKey = 1000 0011 1000 0110 1001 1100 1000 0111=131 134 156 135ASCII bfKey=2206637191 (fullword key) 2.Page Adresses 0 - 1752 (1753 hash buckets) 2206637191 MOD 1753=1110 3.Første side-adresse for tabellen er 60 => Side-adresse =1110 + 60 = 1170


Laste ned ppt "SQLHiA Indekser. SQLHiA Indekser B-TrærIndeks bygget opp som tre-struktur. Benyttes typisk på foreign key. Hash-tabellerNøkkel-tranformering. Benyttes."

Liknende presentasjoner


Annonser fra Google