Gunakan OLTP dalam memori di Azure SQL Managed Instance untuk meningkatkan performa aplikasi Anda

Berlaku untuk:Azure SQL Managed Instance

OLTP dalam memori dapat digunakan untuk meningkatkan performa pemrosesan transaksi, penyerapan data, dan skenario data sementara. Tingkat layanan Business Critical mencakup sejumlah memori Max In-Memory OLTP, batas yang ditentukan oleh jumlah vCore.

Ikuti langkah-langkah ini untuk mengadopsi OLTP dalam memori dalam database yang sudah ada di Azure SQL Managed Instance.

Langkah 1: Identifikasi objek yang akan dimigrasikan ke OLTP dalam memori

SQL Server Management Studio (SSMS) menyertakan laporan Gambaran Umum Analisis Performa Transaksi yang dapat Anda jalankan terhadap database dengan beban kerja aktif. Laporan mengidentifikasi tabel dan prosedur tersimpan yang merupakan kandidat migrasi ke OLTP dalam memori.

Dalam SQL Server Management Studio, untuk menghasilkan laporan:

  • Di Object Explorer,klik kanan simpul database Anda.
  • Pilih Ringkasan Analisis Performa Transaksi Laporan>Standar Laporan>Standar.

Untuk informasi selengkapnya tentang menilai manfaat OLTP dalam memori, lihat Menentukan apakah tabel atau prosedur tersimpan harus di-port ke OLTP dalam memori.

Langkah 2: Membuat database pengujian yang sebanding

Misalkan laporan menunjukkan database Anda memiliki tabel yang akan mendapat manfaat dari dikonversi ke tabel yang dioptimalkan memori. Kami sarankan Anda menguji terlebih dahulu untuk mengonfirmasi indikasi dengan pengujian.

Anda memerlukan salinan pengujian database produksi Anda. Database pengujian harus berada di tingkat layanan yang sama (Business Critical) dan jumlah vCore sebagai database produksi Anda.

Untuk memudahkan pengujian, ubah database pengujian Anda sebagai berikut:

  1. Koneksi ke database pengujian dengan menggunakan SQL Server Management Studio (SSMS).

  2. Untuk menghindari perlunya WITH (SNAPSHOT) opsi dalam kueri, atur opsi database MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT saat ini, seperti yang diperlihatkan dalam pernyataan T-SQL berikut:

    ALTER DATABASE CURRENT
     SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = ON;
    

Langkah 3: Memigrasikan tabel

Anda harus membuat dan mengisi salinan tabel yang dioptimalkan memori yang ingin Anda uji. Anda dapat membuatnya dengan menggunakan:

Wizard Pengoptimalan Memori yang berguna di SQL Server Management Studio

Untuk menggunakan opsi migrasi ini:

  1. Sambungkan ke database dengan SQL Server Management Studio.

  2. Di Object Explorer, klik kanan pada tabel, lalu pilih Memory Optimization Advisor.

    Wizard Tabel Memory Optimizer Advisor ditampilkan.

  3. Dalam wizard, pilih Validasi migrasi (atau tombol Berikutnya ) untuk melihat apakah tabel memiliki fitur yang tidak didukung yang tidak didukung dalam tabel yang dioptimalkan memori. Untuk informasi selengkapnya, lihat:

  4. Jika tabel tidak memiliki fitur yang tidak didukung, penasihat dapat melakukan skema aktual dan migrasi data untuk Anda.

Manual T-SQL

Untuk menggunakan opsi migrasi ini:

  1. Sambungkan ke database pengujian Anda dengan menggunakan SQL Server Management Studio (atau utilitas serupa).
  2. Dapatkan skrip T-SQL lengkap untuk tabel dan indeksnya.
    • Di SQL Server Management Studio, klik kanan simpul tabel Anda.
    • Pilih Tabel Skrip sebagai>BUAT ke>Jendela Kueri Baru.
  3. Di jendela skrip, tambahkan WITH (MEMORY_OPTIMIZED = ON) ke CREATE TABLE pernyataan .
  4. Jika ada indeks CLUSTERED, ubah ke NONCLUSTERED.
  5. Ganti nama tabel yang sudah ada dengan menggunakan sp_rename.
  6. Buat salinan tabel baru yang dioptimalkan memori dengan menjalankan skrip yang diedit CREATE TABLE .
  7. Salin data ke tabel yang dioptimalkan memori Anda dengan menggunakan INSERT...SELECT * INTO:
    INSERT INTO [<new_memory_optimized_table>]
            SELECT * FROM [<old_disk_based_table>];
    

Langkah 4 (opsional): Memigrasikan prosedur tersimpan

Fitur dalam memori juga dapat memodifikasi prosedur tersimpan untuk meningkatkan performa.

Pertimbangan dengan prosedur tersimpan yang dikompilasi secara asli

Prosedur tersimpan yang dikompilasi secara asli harus memiliki opsi berikut pada klausa T-SQL-nya WITH :

  • NATIVE_COMPILATION: yang berarti pernyataan Transact-SQL dalam prosedur semuanya dikompilasi ke kode asli untuk eksekusi yang efisien.
  • SCHEMABINDING: yang berarti tabel bahwa prosedur tersimpan tidak dapat mengubah definisi kolomnya dengan cara apa pun yang akan memengaruhi prosedur tersimpan, kecuali Anda menghilangkan prosedur tersimpan.

Modul asli harus menggunakan satu blok ATOMIC besar untuk manajemen transaksi. Tidak ada peran untuk eksplisit BEGIN TRANSACTION atau ROLLBACK TRANSACTION. Jika kode Anda mendeteksi pelanggaran aturan bisnis, kode tersebut dapat mengakhiri blok atomik dengan pernyataan THROW .

CREATE PROCEDURE khas untuk dikompilasi secara asli

Biasanya T-SQL untuk membuat prosedur tersimpan asli yang dikompilasi mirip dengan template berikut:

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_LEVELUntuk , SNAPSHOT adalah nilai paling umum untuk prosedur tersimpan yang dikompilasi secara asli. Namun, subset nilai lain juga didukung:
    • REPEATABLE READ
    • SERIALIZABLE
  • Nilai LANGUAGE harus ada dalam sys.syslanguages tampilan, di name kolom . Contohnya,N'us_english'.

Cara memigrasikan prosedur tersimpan

Langkah-langkah migrasi adalah:

  1. CREATE PROCEDURE Dapatkan skrip ke prosedur tersimpan yang ditafsirkan reguler.
  2. Regenerasi header-nya agar sesuai dengan templat sebelumnya.
  3. Tentukan apakah kode T-SQL prosedur tersimpan menggunakan fitur apa pun yang tidak didukung untuk prosedur tersimpan yang dikompilasi secara asli. Menerapkan solusi jika perlu. Untuk informasi selengkapnya, lihat Masalah migrasi untuk prosedur tersimpan yang dikompilasi secara asli.
  4. Ganti nama prosedur tersimpan lama dengan menggunakan sp_rename. Atau hanya DROP.
  5. Jalankan skrip T-SQL yang diedit CREATE PROCEDURE .

Langkah 5: Jalankan beban kerja Anda dalam pengujian

Jalankan beban kerja dalam database pengujian Anda yang mirip dengan beban kerja yang berjalan di database produksi Anda. Ini harus mengungkapkan perolehan performa yang dicapai dengan penggunaan fitur dalam memori Anda untuk tabel dan prosedur tersimpan.

Atribut utama beban kerja adalah:

  • Jumlah koneksi bersamaan.
  • Rasio baca/tulis.

Untuk menyesuaikan dan menjalankan beban kerja pengujian, pertimbangkan untuk menggunakan alat ostress.exe yang berguna.

Untuk meminimalkan latensi jaringan, jalankan pengujian Anda di wilayah geografis Azure yang sama dengan tempat database berada.

Langkah 6: Pemantauan pasca-implementasi

Pertimbangkan untuk memantau efek performa implementasi dalam memori Anda dalam produksi: