Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 3914|Svar: 3

[Kilde] [MSSQL] SQL SERVER ordnede GUID'er og uordnede GUID'er som primære nøgleaggregationsindekstests

[Kopier link]
Opslået på 08/06/2023 21.12.26 | | | |
Krav: Når man bruger GUID'er som primære nøgleaggregationsindeks, anbefales det at bruge ordnede GUID'er, da uordnede GUID'er vil medføre spild af plads og dermed fald i læse- og skriveeffektivitet.

Anmeldelse:

SQL Server ydeevneoptimeret indeksfragmentering
https://www.itsvse.com/thread-9508-1-1.html

[Turn] (MSSQL) SQL Server-databaseint og guide til sammenligning af primærnøgler
https://www.itsvse.com/thread-10605-1-1.html

Database GUID-værdi

Globale unikke identifikatorer (GUID) datatyper i SQL Server repræsenteres af datatyperUnikidentifikator, som gemmer en 16-byte binær værdi. En GUID er et binært tal, hvis hovedformål er at være en identifikator, der skal være unik i et netværk med mange computere på mange steder.

Både Guid og SqlGuid har måder at sammenligne forskellige GUID-værdier på. SqlGuid-implementeringen bruger SQL Server-adfærd,De sidste seks bytes af værdien er de vigtigste

Sekventielle GUID'er er iboende gættbare, så brug dem ikke i sikkerhedsfølsomme sammenhænge

Henvisning:Hyperlink-login er synlig.

Databasen er ordnet efter GUID

SQL Server-databasen har en sådanNewSequentialId()funktion til at oprette en ordnet GUID. Når du opretter en tabel, kan du sætte den som standardværdi for et GUID-type felt og automatisk oprette værdien af primærnøglen, når du indsætter nye data (denne funktion kan kun bruges som standardværdi for feltet, ikke direkte kaldes i SQL).

Eksempel:

NewSequentialId()-funktionen kan kun bruges i databaser, selvom Microsofts MSDN-dokumentation angiver, at NEWSEQUENTIALID er en wrapper for Windows UuidCreateSequential-funktionen.

Tip: Brug ikke funktionen, hvis det er et fortrolighedsspørgsmål. FordiDet er muligt at gætte værdien af den næste genererede GUIDfor at få adgang til dataene tilknyttet den GUID.

Henvisning:Hyperlink-login er synlig.
Hyperlink-login er synlig.

.NET opretter en ordnet GUID

UuidCreateSequential-funktionen afhænger af metodens computehardwareDe sidste 12 bit er faktisk netværkskortets MAC-adresse

Koden er som følger:

Resultaterne er som følger:



Mangel:

  • Denne metode kræver, at DllImport kalder Windows-biblioteket, så det er ikke platformtovernet.
  • Den kan ikke bruges i et klyngemiljø, hvor flere maskiner skriver til den samme database, fordi de resulterende GUID'er vil være forskellige fra hinanden (funktionsafhængig computerhardware), hvilket resulterer i indeksfragmentering.
  • Hvis din Windows-server genstarter, kan GUID'en starte i et lavere område, hvilket resulterer i indeksfragmentering.

Henvisning:

Hyperlink-login er synlig.
Hyperlink-login er synlig.

Hvis du bruger et .NET-program til at oprette en SQL SERVER-ordnet GUID, anbefales det at bruge et tredjeparts klassebibliotek:RT. Kam, Nuget-kommandoen er som følger:


Koden er som følger:

Udgang:



Henvisning:Hyperlink-login er synlig.

Ordnede og uordnede GUID primærnøgleindeksfragmenter

Start med at oprette to tabeller med følgende script:

Testen indsætter 100.000 datastykker, og koden er som følger:

Testresultaterne er som følger:

GUIDTidsforbrug (ms)Scanningstæthed [Bedste antal: Faktisk antal], jo højere værdi, desto bedreLogisk scanfragmentering, jo lavere værdi, jo bedreGennemsnitlig sidetæthed (fuld) (Gennemsnit. Sidetæthed (fuld), jo højere værdi, jo bedre
Uordnet GUID 1336712.58% [61:485]98.97%63.66%
Order GUID 14139100.00% [39:39]0.32%99.61%





Testen indsætter igen 1 million datastykker, hvor en uordnet GUID tager 135203 ms og en ordineret GUID tager 135134 ms. Belægningen af opbevaringsplads er som følger:

Uordnet GUID: 36,547 MB
Bestilt GUID: 26,609 MB



Henvisning:Hyperlink-login er synlig.


(Slut)




Tidligere:.NET Core-programmets flersprogede læse- og skriveressourcefiler (.resx)
Næste:optimering af .NET/C# Stream Read diskfilhukommelse
 Udlejer| Opslået på 27/01/2024 11.07.12 |
ABP opretter en ordnet GUID til SQL Server-databasen, kildekoden er som følger:



 Udlejer| Opslået på 24/03/2024 11.43.45 |
EF Core genererer en ordnet GUID-kode:





Hyperlink-login er synlig.

 Udlejer| Opslået på 11/04/2024 15.00.11 |
MySQL genererer en ordnet GUID:Hyperlink-login er synlig.



Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com