Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 3914|Odpověď: 3

[Zdroj] [MSSQL] SQL SERVER uspořádal GUIDy a neuspořádané GUID jako testy agregace primárních klíčů

[Kopírovat odkaz]
Zveřejněno 08.06.2023 21:12:26 | | | |
Požadavky: Při použití GUID jako indexů agregace primárních klíčů se doporučuje používat uspořádané GUID, protože neuspořádané GUID způsobí plýtvání místem a následné snížení efektivity čtení a zápisu.

Přezkoumání:

Fragmentace indexu optimalizovaná pro výkon SQL Serveru
https://www.itsvse.com/thread-9508-1-1.html

[Otočit] (MSSQL) SQL Server databázový int a guid pro porovnání primárních klíčů
https://www.itsvse.com/thread-10605-1-1.html

Hodnota GUID databáze

Globálně unikátní identifikátorové (GUID) datové typy v SQL Serveru jsou reprezentovány datovými typyuniqueidentifier, která ukládá 16bajtovou binární hodnotu. GUID je binární číslo, jehož hlavním účelem je identifikátor jenž musí být jedinečný v síti s mnoha počítači na mnoha místech.

Oba programy, Guid, i SqlGuid, mají způsoby, jak porovnat různé hodnoty GUID. Implementace SqlGuid využívá chování SQL Serveru,Posledních šest bajtů hodnoty je nejdůležitějších

Sekvenční GUIDy jsou ze své podstaty odhadovatelné, takže je nepoužívejte v bezpečnostně citlivých kontextech

Odkaz:Přihlášení k hypertextovému odkazu je viditelné.

Databáze je uspořádána podle GUID

Databáze SQL Server ji máNewSequentialId()funkce pro vytvoření uspořádaného GUID. Při vytváření tabulky ji můžete nastavit jako výchozí hodnotu pole typu GUID a automaticky vytvořit hodnotu primárního klíče při vložení nových dat (tuto funkci lze použít pouze jako výchozí hodnotu pole, není přímo volána v SQL).

Příklad:

Funkci NewSequentialId() lze použít pouze v databázích, ačkoli Microsoftova MSDN dokumentace uvádí, že NEWSEQUENTIALID je obal pro funkci Windows UuidCreateSequential (UuidCreateSequential ve Windows).

Tip: Nepoužívejte tuto funkci, pokud jde o důvěrnost. ProtožeJe možné odhadnout hodnotu dalšího generovaného GUIDaby se přístup k datům spojeným s tímto GUID.

Odkaz:Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné.

.NET vytváří uspořádaný GUID

Funkce UuidCreateSequential závisí na výpočetním hardwaru metodyPosledních 12 bitů je ve skutečnosti MAC adresa síťové karty

Kód je následující:

Výsledky jsou následující:



Nedostatek:

  • Tato metoda vyžaduje, aby DllImport volal knihovnu Windows, takže není multiplatformní.
  • Nelze jej použít v clusterovaném prostředí, kde více strojů zapisuje do stejné databáze, protože výsledné GUID budou od sebe odlišné (hardware závislý na funkci), což vede k fragmentaci indexu.
  • Pokud se váš Windows server restartuje, GUID může začít na nižším rozsahu, což vede k fragmentaci indexu.

Odkaz:

Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné.

Pokud používáte .NET program k vytvoření GUID pořadého SQL SERVER, doporučuje se použít knihovnu tříd třetí strany:RT. Hřeben, příkaz nuget je následující:


Kód je následující:

Výstup:



Odkaz:Přihlášení k hypertextovému odkazu je viditelné.

Uspořádané a neuspořádané fragmenty indexu primárního klíče GUID

Začněte vytvořením dvou tabulek pomocí následujícího skriptu:

Test vloží 100 000 datových částí a kód je následující:

Výsledky testu jsou následující:

Identifikátor guidČas spotřebovaný (ms)Hustota skenování [Nejlepší počet: skutečný počet], čím vyšší hodnota, tím lepšíFragmentace logického skenu, čím nižší hodnota, tím lepšíPrůměrná hustota stránky (plná) (Průměr Hustota stránky (plná), čím vyšší hodnota, tím lepší
Neuspořádané GUID 1336712.58% [61:485]98.97%63.66%
Order GUID 14139100.00% [39:39]0.32%99.61%





Test opět vloží 1 milion dat, přičemž GUID mimo pořadí trvá 135203 ms, a upravený GUID 135134 ms. Obsazenost úložného prostoru je následující:

Neuspořádaný GUID: 36,547 MB
Objednané GUID: 26,609 MB



Odkaz:Přihlášení k hypertextovému odkazu je viditelné.


(Konec)




Předchozí:.NET Core programové vícejazyčné soubory pro čtení a zápis (.resx)
Další:.NET/C# Optimalizace paměť pro čtení disku
 Pronajímatel| Zveřejněno 27.01.2024 11:07:12 |
ABP vytváří uspořádaný GUID pro databázi SQL serveru, zdrojový kód je následující:



 Pronajímatel| Zveřejněno 24.03.2024 11:43:45 |
 Pronajímatel| Zveřejněno 11.04.2024 15:00:11 |
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com