Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 3914|Atbildi: 3

[Avots] [MSSQL] SQL SERVER pasūtīja GUID un nesakārtotus GUID kā primārās atslēgas apkopošanas indeksa testus

[Kopēt saiti]
Publicēts 08.06.2023 21:12:26 | | | |
Prasības: Izmantojot GUID kā primārās atslēgas apkopošanas indeksus, ieteicams izmantot pasūtītos GUID, jo nesakārtoti GUID izraisīs vietas izšķērdēšanu un līdz ar to samazinās lasīšanas un rakstīšanas efektivitāti.

Pārskats:

SQL Server veiktspējai optimizēta indeksa sadrumstalotība
https://www.itsvse.com/thread-9508-1-1.html

[Turn] (MSSQL) SQL Server datu bāzes int un guid primārās atslēgas salīdzināšanai
https://www.itsvse.com/thread-10605-1-1.html

Datu bāzes GUID vērtība

Globāli unikālo identifikatoru (GUID) datu tipi SQL Server tiek attēloti pēc datu tipiemunikālsidentifikators, kurā tiek glabāta 16 baitu binārā vērtība. GUID ir binārs numurs, kura galvenais mērķis ir identifikators, kam jābūt unikālam tīklā ar daudziem datoriem daudzās vietnēs.

Gan GUID, gan SqlGuid ir veidi, kā salīdzināt dažādas GUID vērtības. SqlGuid ieviešana izmanto SQL Server uzvedību,Pēdējie seši vērtības baiti ir vissvarīgākie

Secīgie GUID pēc būtības ir uzminami, tāpēc neizmantojiet tos drošības ziņā

Atsauce:Hipersaites pieteikšanās ir redzama.

Datu bāzi sakārto GUID

SQL Server datu bāzē ir tādsJaunsSequentialId(), lai izveidotu sakārtotu GUID. Veidojot tabulu, varat to iestatīt kā GUID tipa lauka noklusējuma vērtību un automātiski izveidot primārās atslēgas vērtību, ievietojot jaunus datus (šo funkciju var izmantot tikai kā lauka noklusējuma vērtību, kas nav tieši izsaukta SQL).

Piemērs:

Funkciju NewSequentialId() var izmantot tikai datu bāzēs, lai gan Microsoft MSDN dokumentācijā norādīts, ka NEWSEQUENTIALID ir funkcijas Windows UuidCreateSequential iesaiņojums.

Padoms: neizmantojiet šo funkciju, ja tā ir konfidencialitātes problēma. JoIr iespējams uzminēt nākamā ģenerētā GUID vērtību, lai piekļūtu datiem, kas saistīti ar šo GUID.

Atsauce:Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.

.NET izveido sakārtotu GUID

Funkcija UuidCreateSequential ir atkarīga no metodes skaitļošanas aparatūrasPēdējie 12 biti faktiski ir tīkla kartes MAC adrese

Kods ir šāds:

Rezultāti ir šādi:



Trūkums:

  • Šī metode prasa DllImport, lai izsauktu Windows bibliotēku, tāpēc tā nav starpplatforma.
  • To nevar izmantot klasterizētā vidē, kur vairākas mašīnas raksta vienā datu bāzē, jo iegūtie GUID atšķirsies viens no otra (no funkcijām atkarīga skaitļošanas aparatūra), kā rezultātā indekss tiek sadrumstalots.
  • Ja Windows serveris tiek restartēts, GUID var startēties zemākā diapazonā, kā rezultātā rodas indeksa sadrumstalotība.

Atsauce:

Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.

Ja izmantojat .NET programmu, lai izveidotu SQL SERVER pasūtīto GUID, ieteicams izmantot trešās puses klašu bibliotēku:RT. Ķemme, komanda nuget ir šāda:


Kods ir šāds:

Izvades:



Atsauce:Hipersaites pieteikšanās ir redzama.

Sakārtoti un nesakārtoti GUID primārās atslēgas indeksa fragmenti

Sāciet ar divu tabulu izveidi ar šādu skriptu:

Tests ievieto 100 000 datu vienību, un kods ir šāds:

Testa rezultāti ir šādi:

GUIDPatērētais laiks (ms)Skenēšanas blīvums [Labākais skaits: faktiskais skaits], jo lielāka vērtība, jo labākLoģiskās skenēšanas fragmentācija, jo zemāka vērtība, jo labākVidējais lappušu blīvums (pilns) (vid. Lappuses blīvums (pilns), jo lielāka vērtība, jo labāk
Nesakārtots GUID 1336712.58% [61:485]98.97%63.66%
Pasūtīt GUID 14139100.00% [39:39]0.32%99.61%





Tests atkal ievieto 1 miljonu datu vienību, ar nekārtīgu GUID aizņem 135203 ms un ordinēts GUID aizņem 135134 ms. Uzglabāšanas telpu noslogojums ir šāds:

Nesakārtots GUID: 36.547 MB
Pasūtītais GUID: 26.609 MB



Atsauce:Hipersaites pieteikšanās ir redzama.


(Beigas)




Iepriekšējo:.NET Core programmas daudzvalodu lasīšanas un rakstīšanas resursu (.resx) faili
Nākamo:.NET/C# straumes lasīšanas diska failu atmiņas optimizācija
 Saimnieks| Publicēts 27.01.2024 11:07:12 |
ABP izveido pasūtītu GUID sql servera datu bāzei, avota kods ir šāds:



 Saimnieks| Publicēts 24.03.2024 11:43:45 |
 Saimnieks| Publicēts 11.04.2024 15:00:11 |
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com