See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 3914|Vastuse: 3

[Allikas] [MSSQL] SQL SERVER tellis GUID-e ja järjekorras mitte-GUID-e kui peamisi võtmeagregregatsiooni indeksi testisid

[Kopeeri link]
Postitatud 08.06.2023 21:12:26 | | | |
Nõuded: Kui GUID-e kasutatakse esmaste võtmete agregatsiooni indeksitena, soovitatakse kasutada järjestatud GUID-e, sest järjestamata GUID-id raiskab ruumi ja vähendab lugemis- ja kirjutamisefektiivsust.

Läbivaatamine:

SQL Serveri jõudlusele optimeeritud indeksifragmentatsioon
https://www.itsvse.com/thread-9508-1-1.html

[Turn] (MSSQL) SQL Serveri andmebaasi int ja guid primaarvõtmete võrdluseks
https://www.itsvse.com/thread-10605-1-1.html

Andmebaasi GUID väärtus

SQL Serveri globaalselt unikaalse identifikaatori (GUID) andmetüübid esitatakse andmetüüpidenaunikaalne identifikaator, mis salvestab 16-baidise binaarväärtuse. GUID on binaarne number, mille peamine eesmärk on olla identifikaatoriks, mis peab olema unikaalne võrgus, kus on palju arvuteid ja paljudel saitidel.

Nii Guid kui SqlGuid võimaldavad erinevaid GUID väärtusi võrrelda. SqlGuid rakendus kasutab SQL Serveri käitumist,Viimased kuus baiti on kõige olulisemad

Järjestikused GUID-id on olemuslikult arvatavad, seega ära kasuta neid turvatundlikes olukordades

Viide:Hüperlingi sisselogimine on nähtav.

Andmebaas on järjestatud GUID-i järgi

SQL Serveri andmebaasis on üksNewSequentialId()funktsiooni, et luua järjestatud GUID. Tabeli loomisel saad määrata selle GUID-tüüpi välja vaikimisi väärtuseks ning automaatselt luua esmase võtme väärtuse uute andmete sisestamisel (seda funktsiooni saab kasutada ainult välja vaikimisi väärtusena, mitte otse SQL-is kutsuda).

Näide:

NewSequentialId() funktsiooni saab kasutada ainult andmebaasides, kuigi Microsofti MSDN dokumentatsioon ütleb, et NEWSEQUENTIALID on Windowsi UuidCreateSequential funktsiooni ümbris.

Nipp: ära kasuta seda funktsiooni, kui tegemist on konfidentsiaalsusega. KunaJärgmise genereeritud GUID-i väärtust on võimalik ära arvataet pääseda ligi selle GUID-iga seotud andmetele.

Viide:Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.

.NET loob järjestatud GUID-i

UuidCreateSequential funktsioon sõltub meetodi arvutusriistvarastViimased 12 bitti on tegelikult võrgukaardi MAC-aadress

Kood on järgmine:

Tulemused on järgmised:



Puudus:

  • See meetod nõuab, et DllImport kutsuks Windowsi teeki, seega ei ole see platvormideülene.
  • Seda ei saa kasutada klasterdatud keskkonnas, kus mitu masinat kirjutavad samasse andmebaasi, sest tulemuseks olevad GUID-id erinevad üksteisest (funktsioonist sõltuv arvutusriistvara), mis põhjustab indeksi killustumist.
  • Kui Windowsi server taaskäivitub, võib GUID alata madalamal vahemikul, mis põhjustab indeksi fragmentiseerumist.

Viide:

Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.

Kui kasutad .NET programmi SQL SERVERI järjestatud kasutajaliide loomiseks, soovitatakse kasutada kolmanda osapoole klassi teeki:RT. Kamm, nuget käsk on järgmine:


Kood on järgmine:

Väljund:



Viide:Hüperlingi sisselogimine on nähtav.

Järjestatud ja järjestamata GUID primaarvõtme indeksi fragmendid

Alusta kahe tabeli loomisega järgmise skriptiga:

Test lisab 100 000 andmetükki ning kood on järgmine:

Testitulemused on järgmised:

GUIDKulutatud aeg (ms)Skannitihedus [Parim loendus: tegelik loendus], mida kõrgem väärtus, seda paremLoogilise skaneerimise fragmentatsioon, mida madalam väärtus, seda paremKeskmine lehekülgede tihedus (täis) (keskmine) Lehekülgede tihedus (täis), mida kõrgem väärtus, seda parem
Järjestamata GUID 1336712.58% [61:485]98.97%63.66%
Tellimus GUID 14139100.00% [39:39]0.32%99.61%





Test lisab taas 1 miljon andmetükki, kusjuures järjekorrast väljas GUID võtab 135203 ms ja määratud GUID 135134 ms. Hoiuruumi hõivatus on järgmine:

Järjekorras GUID: 36,547 MB
Tellitud GUID: 26,609 MB



Viide:Hüperlingi sisselogimine on nähtav.


(Lõpp)




Eelmine:.NET Core programmi mitmekeelsed lugemis- ja kirjutamisressursside (.resx) failid
Järgmine:.NET/C# Stream Read kettafaili mälu optimeerimine
 Üürileandja| Postitatud 27.01.2024 11:07:12 |
ABP loob sql serveri andmebaasi jaoks järjestatud GUID-i, lähtekood on järgmine:



 Üürileandja| Postitatud 24.03.2024 11:43:45 |
EF Core genereerib järjestatud GUID-koodi:





Hüperlingi sisselogimine on nähtav.

 Üürileandja| Postitatud 11.04.2024 15:00:11 |
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com