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: 1141|Odpověď: 1

[Zdroj] Tabulky optimalizované pro paměť pro databáze SQL SERVER

[Kopírovat odkaz]
Zveřejněno 10. 5. 2025 21:28:18 | | | |
Úvod do tabulk optimalizovaných pro paměť

Tabulky optimalizované pro paměť jsou tabulky vytvořené pomocí CREATE TABLE (Transact-SQL).

Ve výchozím nastavení jsou tabulky optimalizované pro paměť plně trvalé. Stejně jako transakce na (tradičních) tabulkách založených na disku jsou transakce na tabulkách optimalizovaných pro paměť plně atomické, konzistentní, izolované a perzistentní (ACID). Tabulky optimalizované pro paměť a nativně kompilované uložené procedury podporují pouze podmnožinu funkcí Transact-SQL.

Od SQL Server 2016 a Azure SQL Database neexistují žádná omezení ohledně OLTP-specifické kolace nebo kódových stránek v paměti.

Primární paměť tabulky optimalizované pro paměť je primární paměť. Přečtěte řádky z tabulky z paměti a zapisujte je do paměti. Další kopie dat tabulky je uchovávána na disku, ale pouze pro účely perzistence. Pro více informací o trvalých tabulkách viz Vytvořit a spravovat úložiště objektů pro optimalizaci paměti. Data v tabulkách optimalizovaných pro paměť jsou čtena pouze z disku během obnovy databáze (například po restartu serveru).

Pro větší výkonnostní zlepšení podporuje OLTP v paměti perzistální tabulky s transakční trvalou latencí. Zpožděné trvalé transakce jsou ukládány na disk krátce po potvrzení transakce a vrácení kontroly klientovi. Výměnou za lepší výkon jsou zavázané transakce, které nejsou uloženy na disk, ztraceny v případě pádu serveru nebo přehození při failoveru.

Kromě výchozích tabulek optimalizovaných pro perzistentní paměť podporuje SQL Server nezaznamenané tabulky optimalizované pro perzistentní paměť a jejich data nejsou na disku uchovávána. To znamená, že transakce na těchto tabulkách nevyžadují žádný diskový IO, ale pokud dojde k selhání serveru nebo přepojování v failoveru, data jsou ztracena.

OLTP v paměti se integruje se SQL Serverem, aby zajistil bezproblémový zážitek ve všech aspektech, jako je vývoj, nasazení, spravovatelnost a podpora. Databáze může obsahovat jak objekty v paměti, tak objekty založené na disku.

Řádky v tabulce optimalizované pro paměť jsou verzované. To znamená, že každý řádek v tabulce může mít více verzí. Všechny verze řádků jsou udržovány ve stejné datové struktuře tabulky. Verze řádků se používá k umožnění souběžného čtení a zápisu do stejného řádku. Pro více informací o současných čteních a zápisech do stejného řádku viz Věci v tabulce optimalizace paměti.

Přibližné kroky a omezení použití

Schody:

(1) Vytvořit databázi a MEMORY_OPTIMIZED_DATA skupinu souborů (změnit databázi přidat souborovou skupinu, každá databáze může mít pouze jednu MEMORY_OPTIMIZED_DATA souborovou skupinu!!) )
(2) Přidat složku do skupiny souborů pro uložení datových souborů (prosím, nevytvářejte tuto složku předem, použijte alter database add file() do skupiny souborů)
(3) Vytvářejte tabulky optimalizované pro perzistentní/neperzistentní paměť (SQL Server 2014 je ve výchozím nastavení persistován) a musíte také definovat primární klíč na základě neagregovaného hash indexu. Hashed indexy jsou jediným podporovaným typem indexů v tabulkách optimalizovaných pro paměť.
(4) Používejte lokálně zkompilované uložené procedury: Tabulky optimalizované pro paměť podporují lokálně zkompilované uložené procedury, pokud tyto uložené procedury odkazují pouze na tabulky optimalizované pro paměť.

Limit:

(1) Tabulka optimalizovaná pro paměť musí být umístěna pod databází se souborovou skupinou CONTAINS MEMORY_OPTIMIZED_DATA.
(2) Tabulka optimalizovaná pro paměť musí definovat primární klíč na základě neagregovaného hash indexu a tabulka musí být definovánaKontrola cizího klíče nebo omezení není podporována
(3) Tabulka optimalizace paměti musí mít dostatek paměti, jinak operace jako vkládání aktualizací selžou.
(4) SQL Server 2014 má mnoho omezení v těchto tabulkách. Například nepodporují cizí klíče ani kontrolu omezení (což připomíná paměťový engine MySQL), aleNejsou také podporována IDENTITY pole ani DML spouštěče

Použijte tutoriál

Verze databáze jsou následující:

Microsoft SQL Server 2022 (RTM-CU15-GDR) (KB5046059) - 16.0.4150.1 (X64)
        25. září 2024 17:34:41
        Copyright (C) 2022 Microsoft Corporation
        Enterprise Edition: Licencování založené na jádrech (64-bit) na Linuxu (Ubuntu 22.04.4 LTS) <X64>

Nejprve vytvořte databázi a skupinu souborů pomocí následujícího příkazu:

Pokud nevytvoříte skupinu optimalizovanou pro paměť, při vytvoření tabulky optimalizované pro paměť bude hlášena chyba:Nelze vytvořit tabulky optimalizované pro paměť. Pro vytvoření tabulek optimalizovaných pro paměť musí mít databáze MEMORY_OPTIMIZED_FILEGROUP, která je online a obsahuje alespoň jeden kontejner.

Vytvořte dvě tabulky optimalizované pro paměť k testování, jednu persistentní a jednu nepervitální, pomocí následujícího příkazu:

Tabulka optimalizace paměti má dvě možnosti (ODOLNOST = SCHEMA_AND_DATA), (ODOLNOST = SCHEMA_ONLY)
Tabulka odolnosti: ODOLNOST =SCHEMA_AND_DATA
Neperzistentní tabulka: ODOLNOST =SCHEMA_ONLY

Testy jsou vkládány samostatně do tabulky optimalizace paměti100 000 článků(ve skutečnosti 100002 položek) dat, příkaz je následující:





Persistence se zapne za 28 sekund a bez persistence 1 sekundu

Odkaz:

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




Předchozí:Miluji recyklovat software pro kontrolu kvality notebooků
Další:Syntax C# 8.0 používá index a rozsah
 Pronajímatel| Zveřejněno 10. 5. 2025 21:36:40 |
Běžná tabulka vloží 100 000 datových částí a její provedení trvá 18 sekund. Jak je uvedeno níže:



Skript:
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