Uygulama performansınızı geliştirmek için Azure SQL Veritabanı'de bellek içi OLTP kullanma

Şunlar için geçerlidir:Azure SQL Veritabanı

Bellek içi OLTP, premium ve İş Açısından Kritik katmanı veritabanlarında fiyatlandırma katmanını artırmadan işlem işleme, veri alımı ve geçici veri senaryolarının performansını geliştirmek için kullanılabilir.

Mevcut veritabanınızda bellek içi OLTP'yi benimsemek için bu adımları izleyin.

1. Adım: Premium veya İş Açısından Kritik katmanı veritabanı kullandığınızdan emin olun

Bellek içi OLTP yalnızca Azure SQL Veritabanı Premium (DTU) ve İş Açısından Kritik (sanal çekirdek) katmanında desteklenir. Döndürülen sonuç 1 (değil 0) ise bellek içi OLTP desteklenir:

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

XTP , Aşırı İşlem İşleme anlamına gelir.

2. Adım: Bellek içi OLTP'ye geçirilen nesneleri tanımlama

SQL Server Management Studio (SSMS), etkin bir iş yüküne sahip bir veritabanında çalıştırabileceğiniz bir İşlem Performansı Analizine Genel Bakış raporu içerir. Rapor, bellek içi OLTP'ye geçiş için aday olan tabloları ve saklı yordamları tanımlar.

SSMS'de raporu oluşturmak için:

  • Nesne Gezgini veritabanı düğümünüzü sağ tıklatın.
  • Raporlar>Standart Raporları>İşlem Performansı Analizine Genel Bakış'ı seçin.

Bellek içi OLTP'nin avantajlarını değerlendirme hakkında daha fazla bilgi için bkz . Bir tablonun veya saklı yordamın bellek içi OLTP'ye taşınıp taşınmadığını belirleme.

3. Adım: Benzer bir test veritabanı oluşturma

Raporun veritabanınızın bellek için iyileştirilmiş bir tabloya dönüştürülmesini sağlayacak bir tablosu olduğunu gösterdiğini varsayalım. İlk olarak test ederek göstergeyi onaylamak için test yapmanızı öneririz.

Üretim veritabanınızın test kopyasına ihtiyacınız vardır. Test veritabanı, üretim veritabanınızla aynı hizmet katmanı düzeyinde olmalıdır.

Testi kolaylaştırmak için test veritabanınızda aşağıdaki gibi ayarlamalar yapın:

  1. kullanarak test veritabanına BağlanSQL Server Management Studio (SSMS).

  2. Sorgularda seçeneğin WITH (SNAPSHOT) gerekli olmasını önlemek için, geçerli veritabanının MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT seçeneğini aşağıdaki T-SQL deyiminde gösterildiği gibi ayarlayın:

    ALTER DATABASE CURRENT
     SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = ON;
    

4. Adım: Tabloları geçirme

Test etmek istediğiniz tablonun bellek için iyileştirilmiş bir kopyasını oluşturmanız ve doldurmanız gerekir. Aşağıdakilerden birini kullanarak oluşturabilirsiniz:

SSMS'de Bellek İyileştirme Sihirbazı

Bu geçiş seçeneğini kullanmak için:

  1. SSMS ile test veritabanına Bağlan.

  2. Nesne Gezgini tabloya sağ tıklayın ve ardından Bellek İyileştirme Danışmanı'nı seçin.

    Tablo Belleği İyileştirici Danışmanı sihirbazı görüntülenir.

  3. Sihirbazda, tablonun bellek için iyileştirilmiş tablolarda desteklenmeyen özellikleri olup olmadığını görmek için Geçiş doğrulama (veya İleri düğmesi) öğesini seçin. Daha fazla bilgi için bkz.

  4. Tabloda desteklenmeyen özellik yoksa, danışman sizin için gerçek şemayı ve veri geçişini gerçekleştirebilir.

El ile T-SQL

Bu geçiş seçeneğini kullanmak için:

  1. SSMS (veya benzer bir yardımcı program) kullanarak test veritabanınıza Bağlan.
  2. Tablonuz ve dizinleri için tam T-SQL betiğini edinin.
    • SSMS'de tablo düğümünüzü sağ tıklatın.
    • Yeni Sorgu penceresine>CREATE olarak>Betik Tablosu'nu seçin.
  3. Betik penceresinde deyimine CREATE TABLE ekleyinWITH (MEMORY_OPTIMIZED = ON).
  4. KÜMELENDİ dizini varsa, kümeLENMEMIŞ olarak değiştirin.
  5. sp_rename kullanarak mevcut tabloyu yeniden adlandırın.
  6. Düzenlenen CREATE TABLE betiğinizi çalıştırarak tablonun bellek için iyileştirilmiş yeni kopyasını oluşturun.
  7. kullanarak INSERT...SELECT * INTOverileri bellek için iyileştirilmiş tablonuza kopyalayın:
    INSERT INTO [<new_memory_optimized_table>]
            SELECT * FROM [<old_disk_based_table>];
    

5. Adım (isteğe bağlı): Saklı yordamları geçirme

Bellek içi özelliği, gelişmiş performans için saklı yordamı da değiştirebilir.

Yerel olarak derlenmiş saklı yordamlarla ilgili dikkat edilmesi gerekenler

Yerel olarak derlenmiş bir saklı yordam, T-SQL WITH yan tümcesinde aşağıdaki seçeneklere sahip olmalıdır:

  • NATIVE_COMPILATION: yordamdaki Transact-SQL deyimlerinin tümünün verimli yürütme için yerel koda derleneceği anlamına gelir.
  • SCHEMABINDING: Saklı yordamı bırakmadığınız sürece saklı yordamın sütun tanımlarının saklı yordamı etkileyecek şekilde değiştirilemeyeceği tabloları ifade eder.

Yerel modül, işlem yönetimi için tek bir büyük ATOMIC bloğu kullanmalıdır. Açık BEGIN TRANSACTION bir rol yoktur veya ROLLBACK TRANSACTION. kodunuz bir iş kuralının ihlalini algılarsa throw deyimiyle atomik bloğu sonlandırabilir.

Yerel olarak derlenmiş tipik CREATE PROCEDURE

Yerel olarak derlenmiş bir saklı yordam oluşturmak için kullanılan T-SQL genellikle aşağıdaki şablona benzer:

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;
  • TRANSACTION_ISOLATION_LEVELiçin SNAPSHOT, yerel olarak derlenmiş saklı yordamın en yaygın değeridir. Ancak, diğer değerlerin bir alt kümesi de desteklenir:
    • YINELENEBILIR OKUMA
    • SERİLEŞTİRİLEBİLİR
  • Değer LANGUAGE görünümde sys.syslanguages , sütunda name bulunmalıdır. Örneğin, N'us_english'.

Saklı yordamı geçirme

Geçiş adımları şunlardır:

  1. CREATE PROCEDURE Betiği normal yorumlanmış saklı yordama alın.
  2. Üst bilgisini önceki şablonla eşleşecek şekilde yeniden yaz.
  3. Saklı yordam T-SQL kodunun yerel olarak derlenmiş saklı yordamlar için desteklenmeyen özellikleri kullanıp kullanmadığını belirleyin. Gerekirse geçici çözümler uygulayın. Daha fazla bilgi için bkz . Yerel olarak derlenmiş saklı yordamlar için geçiş sorunları.
  4. sp_rename kullanarak eski saklı yordamı yeniden adlandırın. Ya da bırakın.
  5. Düzenlenen CREATE PROCEDURE T-SQL betiğinizi çalıştırın.

6. Adım: İş yükünüzü testte çalıştırma

Test veritabanınızda üretim veritabanınızda çalışan iş yüküne benzer bir iş yükü çalıştırın. Bu, tablolar ve saklı yordamlar için bellek içi özelliğini kullanmanızla elde edilen performans kazancını ortaya çıkarmalıdır.

İş yükünün başlıca öznitelikleri şunlardır:

  • Eşzamanlı bağlantı sayısı.
  • Okuma/yazma oranı.

Test iş yükünü uyarlamak ve çalıştırmak için kullanışlı ostress.exe aracını kullanmayı göz önünde bulundurun. Daha fazla bilgi için bkz. Azure SQL Veritabanı'de bellek içi örnek.

Ağ gecikme süresini en aza indirmek için testinizi veritabanının bulunduğu Azure coğrafi bölgesinde çalıştırın.

7. Adım: Uygulama sonrası izleme

Bellek içi uygulamalarınızın üretimdeki performans etkilerini izlemeyi göz önünde bulundurun: