Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 3914|Vastaus: 3

[Lähde] [MSSQL] SQL SERVER järjesti GUID:t ja järjestämättömät GUID:t ensisijaisiksi avainaggregaatioindeksin testeiksi

[Kopioi linkki]
Julkaistu 8.6.2023 21.12.26 | | | |
Vaatimukset: Kun käytetään GUID-tiedostoja ensisijaisina avainaggregaatioindekseinä, suositellaan järjestettyjen GUID-yhdistelmien käyttöä, koska järjestämättömät käyttöliittymät aiheuttavat tilanhukkaa ja heikentävät luku- ja kirjoitustehokkuutta.

Arvostelu:

SQL Serverin suorituskykyyn optimoitu indeksifragmentaatio
https://www.itsvse.com/thread-9508-1-1.html

[Turn] (MSSQL) SQL Server -tietokannan int ja guid ensisijaisen avaimen vertailuun
https://www.itsvse.com/thread-10605-1-1.html

Tietokannan GUID-arvo

SQL Serverin globaalisti yksilöllisten tunnisteiden (GUID) tietotyypit esitetään tietotyyppeinäuniqueidentifier, joka tallentaa 16 tavun binääriarvon. GUID on binääriluku, jonka päätarkoitus on toimia tunnisteena, joka on oltava ainutlaatuinen verkossa, jossa on monta tietokonetta monilla sivustoilla.

Sekä Guidilla että SqlGuidilla on tapoja vertailla eri GUID-arvoja. SqlGuid-toteutus käyttää SQL Server -toimintaa,Arvon viimeiset kuusi tavua ovat tärkeimmät

Peräkkäiset GUID:t ovat luontaisesti arvattavissa, joten älä käytä niitä turvallisuusherkissä tilanteissa

Viittaus:Hyperlinkin kirjautuminen on näkyvissä.

Tietokanta järjestetään GUID:n mukaan

SQL Server -tietokannassa on yksiNewSequentialId()funktio luodakseen järjestetyn GUID:n. Kun luot taulua, voit asettaa sen GUID-tyyppikentän oletusarvoksi ja luoda automaattisesti ensisijaisen avaimen arvon, kun lisätään uutta dataa (tätä funktiota voi käyttää vain kentän oletusarvona, ei suoraan SQL:ssä).

Esimerkki:

NewSequentialId()-funktiota voi käyttää vain tietokannoissa, vaikka Microsoftin MSDN-dokumentaatiossa todetaan, että NEWSEQUENTIALID on Windowsin UuidCreateSequential-funktion kääre.

Vinkki: Älä käytä toimintoa, jos kyse on luottamuksellisuusasiasta. KoskaOn mahdollista arvata seuraavan generoidun GUID:n arvopäästäkseen käsiksi kyseiseen GUID:iin liittyviin tietoihin.

Viittaus:Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.

.NET luo järjestetyn GUID:n

UuidCreateSequential-funktio riippuu menetelmän laskentalaitteistostaViimeiset 12 bittiä ovat itse asiassa verkkokortin MAC-osoite

Koodi on seuraava:

Tulokset ovat seuraavat:



Puute:

  • Tämä menetelmä vaatii DllImportin kutsumaan Windows-kirjaston, joten se ei ole monialustainen.
  • Sitä ei voi käyttää klusteroidussa ympäristössä, jossa useat koneet kirjoittavat samaan tietokantaan, koska tuloksena olevat GUID:t eroavat toisistaan (funktioriippuvainen laskentalaitteisto), mikä johtaa indeksin pirstaloitumiseen.
  • Jos Windows-palvelimesi käynnistyy uudelleen, GUID saattaa alkaa matalammalla alueella, mikä johtaa indeksin pirstaloitumiseen.

Viittaus:

Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.

Jos käytät .NET-ohjelmaa luodaksesi SQL SERVER -järjestetyn käyttöliittymän, suositellaan kolmannen osapuolen luokkakirjaston käyttöä:RT. Kampa, nuget-komento on seuraava:


Koodi on seuraava:

Tuotos:



Viittaus:Hyperlinkin kirjautuminen on näkyvissä.

Järjestetyt ja järjestämättömät GUID-pääavainindeksin fragmentit

Aloita luomalla kaksi taulukkoa seuraavalla skriptillä:

Testi lisää 100 000 tietopalaa, ja koodi on seuraava:

Testitulokset ovat seuraavat:

GUIDKäytetty aika (ms)Skannaustiheys [Paras lukumäärä: Todellinen luku], mitä suurempi arvo, sitä parempiLooginen skannausfragmentaatio, mitä pienempi arvo, sitä parempiKeskimääräinen sivutiheys (täysi) (Keskiarvo. Sivutiheys (täysi), mitä suurempi arvo, sitä parempi
Järjestämätön GUID 1336712.58% [61:485]98.97%63.66%
Tilaa GUID 14139100.00% [39:39]0.32%99.61%





Testi lisää jälleen miljoona tietopalaa, jossa epäjärjestyksessä oleva GUID ottaa 135203 ms ja määrätty GUID 135134 ms. Varastotilan käyttö on seuraava:

Järjestämätön GUID: 36,547 MB
Tilattu GUID: 26,609 MB



Viittaus:Hyperlinkin kirjautuminen on näkyvissä.


(Loppu)




Edellinen:.NET Core -ohjelman monikieliset luku- ja kirjoitusresurssitiedostot (.resx)
Seuraava:.NET/C# Stream Read -levytiedoston muistin optimointi
 Vuokraisäntä| Julkaistu 27.1.2024 11.07.12 |
ABP luo järjestetyn GUID:n SQL-palvelintietokannalle, lähdekoodi on seuraava:



 Vuokraisäntä| Julkaistu 24.3.2024 11.43.45 |
EF Core generoi järjestetyn GUID-koodin:





Hyperlinkin kirjautuminen on näkyvissä.

 Vuokraisäntä| Julkaistu 11.4.2024 15.00.11 |
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com