Követelmények: Amikor a GUID-eket elsődleges kulcsaggregációs indexként használjuk, ajánlott a rendezett GUID-ek használata, mert a sorrend nélküli GUID-ek helypazarlást okoznak, és ennek következtében csökkennek az olvasási és írási hatékonyság.
Szemle:
Database GUID érték
Az SQL Server globálisan egyedi azonosító (GUID) adattípusai adattípusok szerint jelennek meguniqueidentifier, amely 16 bájtos bináris értéket tárol. A GUID egy bináris szám, amelynek fő célja, hogy egyedinek kell lennie egy olyan hálózatban, ahol sok számítógép található és sok helyszínen.
Mind a Guid, mind a SqlGuid különböző GUID értékeket lehet összehasonlítani. A SqlGuid implementáció SQL Server viselkedést használ,Az érték utolsó hat bájtja a legfontosabb。
A szekvenciális GUID-ek eleve kitalálhatók, ezért ne használd őket biztonságérzékeny kontextusokban。
Utalás:A hiperlink bejelentkezés látható.
Az adatbázist a GUID sorolja
Az SQL Server adatbázisban van egyNewSequentialId()funkciója egy rendezett GUID létrehozására. Tábla létrehozásakor beállíthatod egy GUID típusú mező alapértelmezett értékeként, és automatikusan létrehozhatod az elsődleges kulcs értékét új adat beillesztéskor (ez a függvény csak a mező alapértelmezett értékeként használható, nem közvetlenül SQL-ben hívható).
Példa:
A NewSequentialId() függvény csak adatbázisokban használható, bár a Microsoft MSDN dokumentációja szerint a NEWSEQUENTIALID a Windows UuidCreateSequential függvény burkolatja.
Tipp: Ne használd a funkciót, ha titoktartási kérdésről van szó. MertLehetséges kitalálni a következő generált GUID értékéthogy hozzáférjen az adott GUID-hez kapcsolódó adatokhoz.
Utalás:A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.
A .NET rendezett GUID-et hoz létre
Az UuidCreateSequential függvény a módszer számítási hardverétől függAz utolsó 12 bit valójában a hálózati kártya MAC címe。
A kódex a következő:
Az eredmények a következők:
Hiány:
- Ez a módszer megköveteli, hogy a DllImport meghívja a Windows könyvtárat, így nem platformos megoldás.
- Nem használható klaszterezett környezetben, ahol több gép ugyanahhoz az adatbázishoz ír, mert a kialakuló GUID-ek eltérnek egymástól (függvényfüggő számítástechnikai hardver), ami indexfragmentációhoz vezet.
- Ha a Windows szervered újraindul, a GUID alacsonyabb tartományban indulhat, ami indexfragmentációhoz vezethet.
Utalás:
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.
Ha .NET programot használsz SQL SERVER sorrendű GUID létrehozására, ajánlott harmadik féltől származó osztálykönyvtárat használni:RT. Fésű, a nuget parancs a következő:
A kódex a következő:
Hozam:
Utalás:A hiperlink bejelentkezés látható.
Rendezett és sorrend nélküli GUID elsődleges kulcsindex fragmentumok
Kezdjük azzal, hogy két táblázatot hozz létre a következő szkripttel:
A teszt 100 000 adatdarabot helyez be, és a kód a következő:
A teszteredmények a következők:
| GUID | Lemerült idő (ms) | Szkennelési sűrűség [Legjobb szám: Tényleges Szám], minél magasabb az érték, annál jobb | Logikai szkennelési fragmentáció, minél alacsonyabb az érték, annál jobb | Átlagos oldalsűrűség (teljes) (átlag. Oldalsűrűség (teljes), minél magasabb az érték, annál jobb | | Sorrend nélküli GUID | 13367 | 12.58% [61:485] | 98.97% | 63.66% | | GUID rendelés | 14139 | 100.00% [39:39] | 0.32% | 99.61% |
A teszt ismét 1 millió adatdarabot helyez be, egy sorrendben kívüli GUID 135203 ms-t, egy kijelölt GUID pedig 135134 ms-t vesz igénybe. A tárolóhely elfoglaltsága a következő:
Sorrend nélküli GUID: 36,547 MB Rendelt GUID: 26,609 MB
Utalás:A hiperlink bejelentkezés látható.
(Vége)
|