Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 3914|Svar: 3

[Källa] [MSSQL] SQL SERVER ordnade GUID:er och oordnade GUID:er som primärnyckelaggregeringsindextester

[Kopiera länk]
Publicerad på 2023-06-08 21:12:26 | | | |
Krav: När man använder GUID som primära nyckelaggregationsindex rekommenderas det att använda ordnade GUID, eftersom oordnade GUID:er leder till slöseri med utrymme och därmed minskad läs- och skriveffektivitet.

Recension:

SQL Server prestandaoptimerad indexfragmentering
https://www.itsvse.com/thread-9508-1-1.html

[Turn] (MSSQL) SQL Server-databasint och guide för jämförelse av primärnyckeln
https://www.itsvse.com/thread-10605-1-1.html

Databasens GUID-värde

Globalt unika identifierare (GUID)-datatyper i SQL Server representeras av datatyperUnikidentifierare, som lagrar ett binärt värde på 16 byte. En GUID är ett binärt nummer vars huvudsakliga syfte är att fungera som en identifierare som måste vara unik i ett nätverk med många datorer på många platser.

Både Guid och SqlGuid har sätt att jämföra olika GUID-värden. SqlGuid-implementeringen använder SQL Server-beteende,De sista sex bytena av värdet är de viktigaste

Sekventiella GUID:er är i grunden gissningsbara, så använd dem inte i säkerhetskänsliga sammanhang

Hänvisning:Inloggningen med hyperlänken är synlig.

Databasen ordnas enligt GUID

SQL Server-databasen har en sådanNewSequentialId()funktionen för att skapa en ordnad GUID. När du skapar en tabell kan du ställa in den som standardvärde för ett GUID-typfält och automatiskt skapa primärnyckelns värde när ny data infogas (denna funktion kan endast användas som standardvärde för fältet, inte direkt anropas i SQL).

Exempel:

Funktionen NewSequentialId() kan endast användas i databaser, även om Microsofts MSDN-dokumentation anger att NEWSEQUENTIALID är en wrapper för Windows UuidCreateSequential-funktionen.

Tips: Använd inte funktionen om det handlar om sekretess. EftersomDet är möjligt att gissa värdet på nästa genererade GUIDför att få tillgång till data kopplad till den GUID:en.

Hänvisning:Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.

.NET skapar en ordnad GUID

Funktionen UuidCreateSequential beror på metodens beräkningshårdvaraDe sista 12 bitarna är faktiskt nätverkskortets MAC-adress

Koden är följande:

Resultaten är följande:



Brist:

  • Denna metod kräver att DllImport anropar Windows-biblioteket, så det är inte plattformsoberört.
  • Den kan inte användas i en klustret miljö där flera maskiner skriver till samma databas eftersom de resulterande GUID:erna kommer att skilja sig från varandra (funktionsberoende datorhårdvara), vilket leder till indexfragmentering.
  • Om din Windows-server startar om kan GUID:en starta i ett lägre intervall, vilket resulterar i indexfragmentering.

Hänvisning:

Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.

Om du använder ett .NET-program för att skapa en SQL SERVER-ordnad GUID rekommenderas det att använda ett tredjepartsklassbibliotek:RT. Kam, Nuget-kommandot är följande:


Koden är följande:

Utdata:



Hänvisning:Inloggningen med hyperlänken är synlig.

Ordnade och oordnade GUID-primärnyckelindexfragment

Börja med att skapa två tabeller med följande skript:

Testet infogar 100 000 data, och koden är följande:

Testresultaten är följande:

GUIDTidsåtsatt (ms)Skanningstäthet [Bästa antal: Faktisk antal], ju högre värde, desto bättreLogisk skanningsfragmentering, ju lägre värde, desto bättreGenomsnittlig sidtäthet (full) (Genomsnitt Sidtäthet (full), ju högre värde, desto bättre
Oordnad GUID 1336712.58% [61:485]98.97%63.66%
Order GUID 14139100.00% [39:39]0.32%99.61%





Testet lägger in 1 miljon databitar igen, med en GUID i oordning som tar 135203 ms och en ordinerad GUID som tar 135134 ms. Lagringsutrymmets beläggning är följande:

Oordnad GUID: 36,547 MB
Beställd GUID: 26,609 MB



Hänvisning:Inloggningen med hyperlänken är synlig.


(Slut)




Föregående:.NET Core-programmets flerspråkiga läs- och skrivresursfiler (.resx)
Nästa:.NET/C# Optimering av minnesminne för strömläsning av diskfiler
 Hyresvärd| Publicerad på 2024-01-27 11:07:12 |
ABP skapar en ordnad GUID för SQL Server-databasen, källkoden är följande:



 Hyresvärd| Publicerad på 2024-03-24 11:43:45 |
 Hyresvärd| Publicerad på 2024-04-11 15:00:11 |
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com