Použití OLTP v paměti ve službě Azure SQL Database ke zlepšení výkonu aplikace
Platí pro: Azure SQL Database
OLTP v paměti lze použít ke zlepšení výkonu zpracování transakcí, příjmu dat a přechodných scénářů dat bez zvýšení cíle služby databáze nebo elastického fondu.
- Databáze a elastické fondy v úrovních služeb Premium (DTU) a Pro důležité obchodní informace (vCore) podporují OLTP v paměti.
- Úroveň služby Hyperscale podporuje podmnožinu objektů OLTP v paměti, ale nezahrnuje tabulky optimalizované pro paměť. Další informace najdete v tématu Omezení hyperškálování.
Pokud chcete začít používat OLTP v paměti ve stávajících databázích, postupujte podle těchto kroků.
Krok 1: Ujistěte se, že používáte databázi úrovně Premium nebo Pro důležité obchodní informace
OlTP v paměti se podporuje, pokud výsledek z následujícího dotazu není 1
(ne 0
):
SELECT DATABASEPROPERTYEX(DB_NAME(), 'IsXTPSupported');
XTP je zkratka pro Extrémní zpracování transakcí, což je neformální název funkce OLTP v paměti.
Krok 2: Identifikace objektů, které se mají migrovat do OLTP v paměti
SQL Server Management Studio (SSMS) obsahuje sestavu Přehled analýzy výkonu transakcí, kterou můžete spouštět v databázi s aktivní úlohou. Sestava identifikuje tabulky a uložené procedury, které jsou kandidáty pro migraci do OLTP v paměti.
Generování sestavy v nástroji SSMS:
- V Průzkumník objektů klikněte pravým tlačítkem na uzel databáze.
- Vyberte Přehled analýzy výkonu transakcí standardních>sestav>sestav.
Další informace o posouzení výhod OLTP v paměti naleznete v tématu Určení, zda má být tabulka nebo uložená procedura portována do OLTP v paměti.
Krok 3: Vytvoření srovnatelné testovací databáze
Předpokládejme, že sestava indikuje, že vaše databáze má tabulku, která by měla prospěch z převodu na tabulku optimalizovanou pro paměť. Doporučujeme, abyste první test potvrdili indikaci testováním.
Potřebujete testovací kopii produkční databáze. Testovací databáze by měla být na stejné úrovni úrovně služby jako produkční databáze.
Pokud chcete testování zjednodušit, upravte testovací databázi následujícím způsobem:
Připojte se k testovací databázi pomocí aplikace SQL Server Management Studio (SSMS).
Pokud se chcete vyhnout nutnosti používat
WITH (SNAPSHOT)
možnost v dotazech, nastavte možnost aktuální databázeMEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT
, jak je znázorněno v následujícím příkazu T-SQL:ALTER DATABASE CURRENT SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = ON;
Krok 4: Migrace tabulek
Musíte vytvořit a naplnit kopii tabulky optimalizovanou pro paměť, kterou chcete testovat. Můžete ho vytvořit pomocí následujících:
- Průvodce optimalizací paměti v nástroji SSMS.
- Použijte příkazy T-SQL.
Průvodce optimalizací paměti v SSMS
Pokud chcete použít tuto možnost migrace:
Připojte se k testovací databázi pomocí aplikace SSMS.
V Průzkumník objektů klikněte pravým tlačítkem myši na tabulku a pak vyberte Poradce pro optimalizaci paměti.
Zobrazí se průvodce Poradce pro optimalizaci paměti tabulky.
V průvodci vyberte Ověření migrace (nebo tlačítko Další ), abyste zjistili, jestli tabulka obsahuje nějaké funkce, které nejsou podporovány v tabulkách optimalizovaných pro paměť. Další informace naleznete v tématu:
- Kontrolní seznam optimalizace paměti v nástroji Poradce pro optimalizaci paměti.
- Konstrukty jazyka Transact-SQL, které OLTP v paměti nepodporuje.
- Migrace na OLTP v paměti
Pokud tabulka nemá žádné nepodporované funkce, může poradce provést skutečné schéma a migraci dat za vás.
Ruční T-SQL
Pokud chcete použít tuto možnost migrace:
- Připojte se k testovací databázi pomocí aplikace SSMS.
- Získejte úplný skript T-SQL pro vaši tabulku a jeho omezení a indexy.
- V nástroji SSMS klikněte pravým tlačítkem na uzel tabulky.
- Vyberte tabulku skriptů jako>CREATE do>nového okna dotazu.
- V okně skriptu přidejte
WITH (MEMORY_OPTIMIZED = ON)
doCREATE TABLE
příkazu. Další informace najdete v tématu Syntaxe pro tabulky optimalizované pro paměť. - Pokud existuje clusterovaný index, změňte ho na NONCLUSTERED.
- Přejmenujte existující tabulku pomocí sp_rename.
- Vytvořte novou kopii tabulky optimalizovanou pro paměť spuštěním upraveného
CREATE TABLE
skriptu. - Zkopírujte data do tabulky optimalizované pro paměť pomocí
INSERT...SELECT * INTO
:INSERT INTO [<new_memory_optimized_table>] SELECT * FROM [<old_disk_based_table>];
Krok 5 (volitelné): Migrace uložených procedur
OLTP v paměti také podporuje nativně kompilované uložené procedury, které můžou zlepšit výkon T-SQL.
Důležité informace o nativně zkompilovaných uložených procedurách
Nativně zkompilovaná uložená procedura musí mít v klauzuli T-SQL WITH
následující možnosti:
- NATIVE_COMPILATION: To znamená, že příkazy jazyka Transact-SQL v postupu jsou všechny zkompilovány do nativního kódu pro efektivní provádění.
- SCHEMABINDING: To znamená, že tabulky odkazované v uložené proceduře nemohou mít jejich definice změněny žádným způsobem, který by ovlivnil uloženou proceduru, pokud neuložíte uloženou proceduru.
Nativně zkompilovaný modul musí pro správu transakcí používat jeden blok ATOMIC. Explicitní ani ROLLBACK TRANSACTION
příkazy se nepoužívajíBEGIN TRANSACTION
. Váš kód může atomický blok ukončit příkazem THROW , například pokud zjistí porušení obchodního pravidla.
Příklad nativně zkompilované uložené procedury
T-SQL pro vytvoření nativně zkompilované uložené procedury se podobá následující šabloně:
CREATE PROCEDURE schemaname.procedurename
@param1 type1, ...
WITH NATIVE_COMPILATION, SCHEMABINDING
AS
BEGIN ATOMIC WITH
(
TRANSACTION ISOLATION LEVEL = SNAPSHOT,
LANGUAGE = N'<desired sys.syslanuages.sysname value>'
)
...
END;
- Pro ,
TRANSACTION_ISOLATION_LEVEL
SNAPSHOT
je nejběžnější hodnotou pro nativně zkompilované uložené procedury. Podporuje se ale také podmnožina ostatních hodnot:REPEATABLE READ
SERIALIZABLE
- Hodnota
LANGUAGE
musí být vsys.syslanguages
zobrazení ve sloupciname
. NapříkladN'us_english'
.
Jak migrovat uloženou proceduru pro použití nativní kompilace
Postup migrace:
CREATE PROCEDURE
Získejte skript pro běžnou (interpretovanou) uloženou proceduru.- Přepište záhlaví tak, aby odpovídalo předchozí šabloně.
- Zjistěte, zda uložený procedura T-SQL kód používá všechny funkce, které nejsou podporovány pro nativně zkompilované uložené procedury. V případě potřeby implementujte alternativní řešení. Další informace najdete v tématu Problémy s migrací pro nativně zkompilované uložené procedury.
- Přejmenujte starou uloženou proceduru pomocí sp_rename nebo ji přejmenujte.
- Spusťte upravený
CREATE PROCEDURE
skript T-SQL.
Krok 6: Spuštění úlohy v testu
Spusťte úlohu v testovací databázi, která se podobá úloze spuštěné v produkční databázi. To by mělo odhalit zvýšení výkonu dosaženého použitím OLTP v paměti pro tabulky a uložené procedury.
Hlavní atributy úlohy jsou:
- Počet souběžných připojení
- Poměr čtení a zápisu
Pokud chcete testovací úlohu přizpůsobit a spustit, zvažte použití ostress.exe
nástroje ze skupiny nástrojů RML nástrojů. Další informace najdete v ukázce v paměti ve službě Azure SQL Database.
Pokud chcete minimalizovat latenci sítě, spusťte ostress.exe
ji ve stejné oblasti Azure jako databáze.
Krok 7: Monitorování po implementaci
Zvažte monitorování výkonu implementace OLTP v paměti v produkčním prostředí:
- Monitorujte úložiště OLTP v paměti.
- Monitorování pomocí zobrazení dynamické správy