Nõuded: Kui GUID-e kasutatakse esmaste võtmete agregatsiooni indeksitena, soovitatakse kasutada järjestatud GUID-e, sest järjestamata GUID-id raiskab ruumi ja vähendab lugemis- ja kirjutamisefektiivsust.
Läbivaatamine:
Andmebaasi GUID väärtus
SQL Serveri globaalselt unikaalse identifikaatori (GUID) andmetüübid esitatakse andmetüüpidenaunikaalne identifikaator, mis salvestab 16-baidise binaarväärtuse. GUID on binaarne number, mille peamine eesmärk on olla identifikaatoriks, mis peab olema unikaalne võrgus, kus on palju arvuteid ja paljudel saitidel.
Nii Guid kui SqlGuid võimaldavad erinevaid GUID väärtusi võrrelda. SqlGuid rakendus kasutab SQL Serveri käitumist,Viimased kuus baiti on kõige olulisemad。
Järjestikused GUID-id on olemuslikult arvatavad, seega ära kasuta neid turvatundlikes olukordades。
Viide:Hüperlingi sisselogimine on nähtav.
Andmebaas on järjestatud GUID-i järgi
SQL Serveri andmebaasis on üksNewSequentialId()funktsiooni, et luua järjestatud GUID. Tabeli loomisel saad määrata selle GUID-tüüpi välja vaikimisi väärtuseks ning automaatselt luua esmase võtme väärtuse uute andmete sisestamisel (seda funktsiooni saab kasutada ainult välja vaikimisi väärtusena, mitte otse SQL-is kutsuda).
Näide:
NewSequentialId() funktsiooni saab kasutada ainult andmebaasides, kuigi Microsofti MSDN dokumentatsioon ütleb, et NEWSEQUENTIALID on Windowsi UuidCreateSequential funktsiooni ümbris.
Nipp: ära kasuta seda funktsiooni, kui tegemist on konfidentsiaalsusega. KunaJärgmise genereeritud GUID-i väärtust on võimalik ära arvataet pääseda ligi selle GUID-iga seotud andmetele.
Viide:Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
.NET loob järjestatud GUID-i
UuidCreateSequential funktsioon sõltub meetodi arvutusriistvarastViimased 12 bitti on tegelikult võrgukaardi MAC-aadress。
Kood on järgmine:
Tulemused on järgmised:
Puudus:
- See meetod nõuab, et DllImport kutsuks Windowsi teeki, seega ei ole see platvormideülene.
- Seda ei saa kasutada klasterdatud keskkonnas, kus mitu masinat kirjutavad samasse andmebaasi, sest tulemuseks olevad GUID-id erinevad üksteisest (funktsioonist sõltuv arvutusriistvara), mis põhjustab indeksi killustumist.
- Kui Windowsi server taaskäivitub, võib GUID alata madalamal vahemikul, mis põhjustab indeksi fragmentiseerumist.
Viide:
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Kui kasutad .NET programmi SQL SERVERI järjestatud kasutajaliide loomiseks, soovitatakse kasutada kolmanda osapoole klassi teeki:RT. Kamm, nuget käsk on järgmine:
Kood on järgmine:
Väljund:
Viide:Hüperlingi sisselogimine on nähtav.
Järjestatud ja järjestamata GUID primaarvõtme indeksi fragmendid
Alusta kahe tabeli loomisega järgmise skriptiga:
Test lisab 100 000 andmetükki ning kood on järgmine:
Testitulemused on järgmised:
| GUID | Kulutatud aeg (ms) | Skannitihedus [Parim loendus: tegelik loendus], mida kõrgem väärtus, seda parem | Loogilise skaneerimise fragmentatsioon, mida madalam väärtus, seda parem | Keskmine lehekülgede tihedus (täis) (keskmine) Lehekülgede tihedus (täis), mida kõrgem väärtus, seda parem | | Järjestamata GUID | 13367 | 12.58% [61:485] | 98.97% | 63.66% | | Tellimus GUID | 14139 | 100.00% [39:39] | 0.32% | 99.61% |
Test lisab taas 1 miljon andmetükki, kusjuures järjekorrast väljas GUID võtab 135203 ms ja määratud GUID 135134 ms. Hoiuruumi hõivatus on järgmine:
Järjekorras GUID: 36,547 MB Tellitud GUID: 26,609 MB
Viide:Hüperlingi sisselogimine on nähtav.
(Lõpp)
|