Laste ned presentasjonen
Presentasjon lastes. Vennligst vent
PublisertTor Johannessen Endret for 10 år siden
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
Liknende presentasjoner
© 2024 SlidePlayer.no Inc.
All rights reserved.