Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 3914|Válasz: 3

[Forrás] [MSSQL] Az SQL SERVER elsődleges kulcsaggregációs indextesztként GUID-eket és sorrend nélküli GUID-eket rendelt

[Linket másol]
Közzétéve 2023. 06. 08. 21:12:26 | | | |
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:

SQL Server teljesítményoptimalizált indexfragmentáció
https://www.itsvse.com/thread-9508-1-1.html

[Turn] (MSSQL) SQL Server adatbázis int és guid elsődleges kulcs összehasonlításához
https://www.itsvse.com/thread-10605-1-1.html

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:

GUIDLemerült idő (ms)Szkennelési sűrűség [Legjobb szám: Tényleges Szám], minél magasabb az érték, annál jobbLogikai 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 1336712.58% [61:485]98.97%63.66%
GUID rendelés 14139100.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)




Előző:.NET Core program többnyelvű olvasó-írási erőforrás (.resx) fájlok
Következő:.NET/C# Stream Read lemezfájl memóriaoptimalizálás
 Háziúr| Közzétéve 2024. 01. 27. 11:07:12 |
Az ABP rendezett GUID-t hoz létre a SQL szerver adatbázishoz, a forráskód a következő:



 Háziúr| Közzétéve 2024. 03. 24. 11:43:45 |
Az EF Core egy rendezett GUID kódot generál:





A hiperlink bejelentkezés látható.

 Háziúr| Közzétéve 2024. 04. 11. 15:00:11 |
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com