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 v databázích úrovně Premium a Pro důležité obchodní informace bez zvýšení cenové úrovně.

Pokud chcete ve stávající databázi přijmout OLTP v paměti, 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 jenom v úrovni Premium (DTU) a Pro důležité obchodní informace (vCore) služby Azure SQL Database. OlTP v paměti se podporuje, pokud je 1 vrácený výsledek (ne 0):

SELECT DatabasePropertyEx(Db_Name(), 'IsXTPSupported');

XTP je zkratka pro Extreme Transaction Processing.

Krok 2: Identifikace objektů pro migraci 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.

V nástroji SSMS vygenerujte sestavu:

  • 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 by měla 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řipojení do testovací databáze pomocí 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řipojení do testovací databáze 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 nepodporované 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řipojení k testovací databázi pomocí aplikace SSMS (nebo podobného nástroje).
  2. Získejte úplný skript T-SQL pro vaši tabulku a jeho 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.
  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

Funkce v paměti může také upravit uloženou proceduru, aby se zlepšil výkon.

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, které uložená procedura nemůže mít změněny definice sloupců žádným způsobem, který by ovlivnil uloženou proceduru, pokud neuložíte uloženou proceduru.

Nativní modul musí pro správu transakcí používat jeden velký blok ATOMIC. Neexistuje žádná role pro explicitní BEGIN TRANSACTION nebo ROLLBACK TRANSACTION. Pokud váš kód zjistí porušení obchodního pravidla, může atomický blok ukončit příkazem THROW .

Typická procedura CREATE pro nativní kompilaci

T-SQL k vytvoření nativně zkompilované uložené procedury je obvykle podobné 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;
  • V případě TRANSACTION_ISOLATION_LEVEL, SNAPSHOT je nejběžnější hodnota pro nativně zkompilovanou uloženou proceduru. Podporuje se ale také podmnožina ostatních hodnot:
    • OPAKOVATELNÉ ČTENÍ
    • SERIALIZOVATELNÝ
  • Hodnota LANGUAGE musí být v sys.syslanguages zobrazení ve sloupci name . Například N'us_english'.

Jak migrovat uloženou proceduru

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 ho prostě vyhoďte.
  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 funkce 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í praktického nástroje ostress.exe. Další informace najdete v ukázce v paměti ve službě Azure SQL Database.

Pokud chcete minimalizovat latenci sítě, spusťte test ve stejné geografické oblasti Azure, ve které databáze existuje.

Krok 7: Monitorování po implementaci

Zvažte monitorování účinků výkonu implementací v paměti v produkčním prostředí: