Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 3914|Odgovoriti: 3

[Vir] [MSSQL] SQL SERVER je kot teste indeksa agregacije primarnih ključev uredil GUID-je in neurejene GUID-je

[Kopiraj povezavo]
Objavljeno na 8. 06. 2023 21:12:26 | | | |
Zahteve: Pri uporabi GUID-ov kot indeksov za agregacijo primarnih ključev je priporočljivo uporabljati urejene GUID-je, saj neurejeni GUID-ji povzročajo izgubo prostora in posledično zmanjšanje učinkovitosti branja in pisanja.

Pregled:

Fragmentacija indeksa, optimizirana za zmogljivost SQL Serverja
https://www.itsvse.com/thread-9508-1-1.html

[Obrat] (MSSQL) SQL Server database int and guid za primerjavo primarnih ključev
https://www.itsvse.com/thread-10605-1-1.html

Vrednost GUID baze podatkov

Globalno edinstveni identifikatorji (GUID) podatkovni tipi v SQL Serverju so predstavljeni z podatkovnimi tipiuniqueidentifier, ki shranjuje 16-bajtno binarno vrednost. GUID je binarna številka, katere glavni namen je identifikator, ki mora biti edinstven v omrežju z mnogimi računalniki na več lokacijah.

Tako Guid kot SqlGuid imata načine za primerjavo različnih GUID vrednosti. Implementacija SqlGuid uporablja vedenje SQL Serverja,Zadnjih šest bajtov vrednosti je najpomembnejših

Zaporedni GUID-i so po naravi ugibljivi, zato jih ne uporabljajte v varnostno občutljivih kontekstih

Referenčni:Prijava do hiperpovezave je vidna.

Baza podatkov je urejena po GUID

SQL Server baza podatkov ima enoNewSequentialId()funkcije za ustvarjanje urejenega GUID-a. Pri ustvarjanju tabele jo lahko nastavite kot privzeto vrednost polja tipa GUID in samodejno ustvarite vrednost primarnega ključa ob vnosu novih podatkov (ta funkcija se lahko uporablja le kot privzeta vrednost polja, ne pa neposredno klicana v SQL).

Primer:

Funkcijo NewSequentialId() je mogoče uporabljati le v podatkovnih bazah, čeprav Microsoftova MSDN dokumentacija navaja, da je NEWSEQUENTIALID ovojnica za funkcijo Windows UuidCreateSequential (UuidCreateSequential v operacijskem sistemu).

Nasvet: Funkcije ne uporabljajte, če gre za vprašanje zaupnosti. KerMožno je ugibati vrednost naslednjega generiranega GUIDza dostop do podatkov, povezanih s tem GUID-jem.

Referenčni:Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.

.NET ustvari urejen GUID

Funkcija UuidCreateSequential je odvisna od računalniške strojne opreme metodeZadnjih 12 bitov je pravzaprav MAC naslov omrežne kartice

Koda je naslednja:

Rezultati so naslednji:



Pomanjkljivost:

  • Ta metoda zahteva, da DllImport kliče Windows knjižnico, zato ni večplatformska.
  • Ni ga mogoče uporabljati v gručenem okolju, kjer več računalnikov piše v isto bazo podatkov, ker bodo nastali GUID-ji med seboj različni (strojna oprema, odvisna od funkcije), kar povzroča fragmentacijo indeksov.
  • Če se vaš Windows strežnik ponovno zažene, se lahko GUID začne na nižjem območju, kar povzroči fragmentacijo indeksa.

Referenčni:

Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.

Če uporabljate .NET program za ustvarjanje SQL SERVER urejenega GUID-a, je priporočljivo uporabiti knjižnico razredov tretje osebe:RT. Glavnik, ukaz nuget je naslednji:


Koda je naslednja:

Izhod:



Referenčni:Prijava do hiperpovezave je vidna.

Urejeni in neurejeni fragmenti indeksa primarnega ključa GUID

Začnite z ustvarjanjem dveh tabel z naslednjim skriptom:

Test vnese 100.000 podatkov, koda pa je naslednja:

Rezultati testa so naslednji:

GUIDČas, porabljen (ms)Gostota skeniranja [Najboljše štetje: dejansko število], višja kot je vrednost, boljeFragmentacija logičnega skeniranja, nižja kot je vrednost, boljePovprečna gostota strani (polna) (Povprečno Gostota strani (polna), višja kot je vrednost, bolje
Neurejeni GUID 1336712.58% [61:485]98.97%63.66%
Naročilo GUID 14139100.00% [39:39]0.32%99.61%





Test ponovno vnese 1 milijon podatkov, pri čemer GUID izven vrstnega reda potrebuje 135203 ms, ordinirani GUID pa 135134 ms. Zasedenost skladiščnega prostora je naslednja:

Neurejeni GUID: 36,547 MB
Naročena GUID: 26,609 MB



Referenčni:Prijava do hiperpovezave je vidna.


(Konec)




Prejšnji:.NET Core program večjezične datoteke za branje in pisanje virov (.resx)
Naslednji:.NET/C# Optimizacija za branje diskovnih datotek
 Najemodajalec| Objavljeno na 27. 01. 2024 11:07:12 |
ABP ustvari urejen GUID za bazo SQL strežnika, izvorna koda pa je naslednja:



 Najemodajalec| Objavljeno na 24. 03. 2024 11:43:45 |
EF Core generira urejeno GUID kodo:





Prijava do hiperpovezave je vidna.

 Najemodajalec| Objavljeno na 11. 04. 2024 15:00:11 |
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com