Sdílet prostřednictvím


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.

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:

  1. Připojte se k testovací databázi pomocí aplikace SQL Server Management Studio (SSMS).

  2. Pokud se chcete vyhnout nutnosti používat WITH (SNAPSHOT) možnost v dotazech, nastavte možnost aktuální databáze MEMORY_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 SSMS

Pokud chcete použít tuto možnost migrace:

  1. Připojte se k testovací databázi pomocí aplikace SSMS.

  2. 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.

  3. 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:

  4. 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:

  1. Připojte se k testovací databázi pomocí aplikace SSMS.
  2. 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.
  3. V okně skriptu přidejte WITH (MEMORY_OPTIMIZED = ON) do CREATE TABLE příkazu. Další informace najdete v tématu Syntaxe pro tabulky optimalizované pro paměť.
  4. Pokud existuje clusterovaný index, změňte ho na NONCLUSTERED.
  5. Přejmenujte existující tabulku pomocí sp_rename.
  6. Vytvořte novou kopii tabulky optimalizovanou pro paměť spuštěním upraveného CREATE TABLE skriptu.
  7. 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_LEVELSNAPSHOT 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 v sys.syslanguages zobrazení ve sloupci name . Například N'us_english'.

Jak migrovat uloženou proceduru pro použití nativní kompilace

Postup migrace:

  1. CREATE PROCEDURE Získejte skript pro běžnou (interpretovanou) uloženou proceduru.
  2. Přepište záhlaví tak, aby odpovídalo předchozí šabloně.
  3. 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.
  4. Přejmenujte starou uloženou proceduru pomocí sp_rename nebo ji přejmenujte.
  5. 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í: