Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 3914|Odpoveď: 3

[Zdroj] [MSSQL] SQL SERVER usporiadal GUID a neusporiadané GUID ako testy agregácie primárnych kľúčov

[Kopírovať odkaz]
Zverejnené 8. 6. 2023 21:12:26 | | | |
Požiadavky: Pri používaní GUID ako indexov agregácie primárnych kľúčov sa odporúča používať usporiadané GUID, pretože neusporiadané GUID spôsobujú plytvanie miestom a následné zníženie efektivity čítania a zápisu.

Revízia:

Fragmentácia indexu optimalizovaná pre výkon SQL Servera
https://www.itsvse.com/thread-9508-1-1.html

[Otočiť] (MSSQL) SQL Server databázový int a guid na porovnanie primárnych kľúčov
https://www.itsvse.com/thread-10605-1-1.html

Hodnota GUID databázy

Globálne jedinečné identifikátory (GUID) dátové typy v SQL Serveri sú reprezentované dátovými typmiuniqueidentifier, ktorá ukladá 16-bajtovú binárnu hodnotu. GUID je binárne číslo, ktorého hlavným účelom je identifikátor, ktorý musí byť jedinečný v sieti s mnohými počítačmi na viacerých lokalitách.

Guid aj SqlGuid majú spôsoby, ako porovnávať rôzne hodnoty GUID. Implementácia SqlGuid využíva správanie SQL Servera,Posledných šesť bajtov hodnoty je najdôležitejších

Sekvenčné GUID sú prirodzene hádateľné, preto ich nepoužívajte v bezpečnostne citlivých kontextoch

Referencia:Prihlásenie na hypertextový odkaz je viditeľné.

Databáza je usporiadaná podľa GUID

Databáza SQL Server má jedenNewSequentialId()funkcie na vytvorenie usporiadaného GUID. Pri vytváraní tabuľky ju môžete nastaviť ako predvolenú hodnotu poľa typu GUID a automaticky vytvoriť hodnotu primárneho kľúča pri vkladaní nových údajov (túto funkciu možno použiť len ako predvolenú hodnotu poľa, nie priamo volanú v SQL).

Príklad:

Funkcia NewSequentialId() sa dá použiť iba v databázach, hoci dokumentácia Microsoft MSDN uvádza, že NEWSEQUENTIALID je obal pre funkciu Windows UuidCreateSequential (UuidCreateSequential vo Windows).

Tip: Nepoužívajte túto funkciu, ak ide o dôvernosť. LeboJe možné odhadnúť hodnotu ďalšieho vygenerovaného GUIDna prístup k údajom spojeným s týmto GUID.

Referencia:Prihlásenie na hypertextový odkaz je viditeľné.
Prihlásenie na hypertextový odkaz je viditeľné.

.NET vytvára usporiadaný GUID

Funkcia UuidCreateSequential závisí od výpočtového hardvéru metódyPosledných 12 bitov je v skutočnosti MAC adresa sieťovej karty

Kód je nasledovný:

Výsledky sú nasledovné:



Nedostatok:

  • Táto metóda vyžaduje, aby DllImport volal knižnicu Windows, takže nie je multiplatformová.
  • Nedá sa použiť v zhlukovanom prostredí, kde viaceré stroje zapisujú do tej istej databázy, pretože výsledné GUID budú odlišné (hardvér závislý od funkcií), čo vedie k fragmentácii indexu.
  • Ak sa váš Windows server reštartuje, GUID môže začať na nižšom rozsahu, čo vedie k fragmentácii indexu.

Referencia:

Prihlásenie na hypertextový odkaz je viditeľné.
Prihlásenie na hypertextový odkaz je viditeľné.

Ak používate .NET program na vytvorenie SQL SERVER poradeného GUID, odporúča sa použiť knižnicu triedy tretej strany:RT. Hrebeň, príkaz nuget je nasledovný:


Kód je nasledovný:

Výstup:



Referencia:Prihlásenie na hypertextový odkaz je viditeľné.

Usporiadané a neusporiadané fragmenty indexu primárneho kľúča GUID

Začnite vytvorením dvoch tabuliek pomocou nasledujúceho skriptu:

Test vloží 100 000 dát a kód je nasledovný:

Výsledky testov sú nasledovné:

GUIDČas spotrebovaný (ms)Hustota skenovania [Najlepší spočet: skutočný počet], čím vyššia hodnota, tým lepšieFragmentácia logického skenu, čím nižšia hodnota, tým lepšiePriemerná hustota stránky (plná) (Priemer Hustota stránky (plná), čím vyššia hodnota, tým lepšie
Neusporiadaný GUID 1336712.58% [61:485]98.97%63.66%
Poradie GUID 14139100.00% [39:39]0.32%99.61%





Test opäť vkladá 1 milión dát, pričom GUID mimo poradia trvá 135203 ms a ordinovaný GUID 135134 ms. Obsadenosť skladovacích priestorov je nasledovná:

Neusporiadané GUID: 36,547 MB
Objednané GUID: 26,609 MB



Referencia:Prihlásenie na hypertextový odkaz je viditeľné.


(Koniec)




Predchádzajúci:.NET Core programové viacjazyčné súbory na čítanie a zápis zdrojov (.resx)
Budúci:.NET/C# Optimalizácia pamäťovej pamäte súborov na čítanie prúdu
 Prenajímateľ| Zverejnené 27. 1. 2024 11:07:12 |
ABP vytvára usporiadaný GUID pre databázu SQL servera, zdrojový kód je nasledovný:



 Prenajímateľ| Zverejnené 24. 3. 2024 11:43:45 |
 Prenajímateľ| Zverejnené 11. 4. 2024 15:00:11 |
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com