Bagikan melalui


Menggunakan OLTP Dalam Memori di Azure SQL Database untuk meningkatkan performa aplikasi Anda

Berlaku untuk: Azure SQL Database

OLTP Dalam Memori dapat digunakan untuk meningkatkan performa pemrosesan transaksi, penyerapan data, dan skenario data sementara, tanpa meningkatkan tujuan layanan database atau kumpulan elastis.

  • Database dan kumpulan elastis di tingkat layanan Premium (DTU) dan Business Critical (vCore) mendukung OLTP Dalam Memori.
  • Tingkat layanan Hyperscale mendukung subset objek OLTP Dalam Memori, tetapi tidak menyertakan tabel yang dioptimalkan memori. Untuk informasi selengkapnya, lihat Batasan Hyperscale.

Ikuti langkah-langkah ini untuk mulai menggunakan OLTP Dalam Memori di database Anda yang sudah ada.

Langkah 1: Pastikan Anda menggunakan database tingkat Premium atau Bisnis Penting

OLTP Dalam Memori didukung jika hasil dari kueri berikut adalah 1 (bukan 0):

SELECT DATABASEPROPERTYEX(DB_NAME(), 'IsXTPSupported');

XTP adalah singkatan dari Pemrosesan Transaksi Ekstrem, yang merupakan nama informal dari fitur OLTP Dalam Memori.

Langkah 2: Identifikasi objek untuk dimigrasikan ke OLTP Dalam Memory

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

Untuk menghasilkan laporan di SQL Server Management Directory:

  • 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 3: 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 pada tingkat layanan yang sama dengan database produksi Anda.

Untuk memudahkan pengujian, ubah database pengujian Anda sebagai berikut:

  1. Sambungkan 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 4: 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 apa pun 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 SSMS.
  2. Dapatkan skrip T-SQL lengkap untuk tabel Anda serta batasan 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 . Untuk informasi selengkapnya, lihat Sintaks untuk tabel memori yang dioptimalkan.
  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 5 (opsional): Memigrasikan prosedur yang disimpan

OLTP Dalam Memori juga mendukung prosedur tersimpan yang dikompilasi secara asli, yang dapat meningkatkan performa T-SQL.

Pertimbangan dengan prosedur tersimpan yang dikompilasi secara asli

Prosedur tersimpan yang dikompilasi secara asli harus memiliki opsi berikut dalam klausul 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 bahwa tabel yang dirujuk dalam prosedur tersimpan tidak dapat mengubah definisinya dengan cara apa pun yang akan memengaruhi prosedur tersimpan, kecuali Anda menghilangkan prosedur tersimpan.

Modul yang dikompilasi secara asli harus menggunakan satu blok ATOMIC untuk manajemen transaksi. Tidak ada penggunaan eksplisit BEGIN TRANSACTION atau ROLLBACK TRANSACTION pernyataan. Kode Anda dapat mengakhiri blok atomik dengan pernyataan THROW , misalnya jika mendeteksi pelanggaran aturan bisnis.

Contoh prosedur tersimpan yang dikompilasi secara asli

T-SQL untuk membuat prosedur tersimpan yang dikompilasi secara asli mirip dengan templat 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 untuk menggunakan kompilasi asli

Langkah-langkah migrasi adalah:

  1. CREATE PROCEDURE Dapatkan skrip ke prosedur tersimpan reguler (ditafsirkan).
  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 letakkan.
  5. Jalankan skrip T-SQL yang diedit CREATE PROCEDURE .

Langkah 6: 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 OLTP Dalam Memori 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 ostress.exe menggunakan alat dari grup alat Utilitas RML. Untuk informasi selengkapnya, lihat Sampel dalam memori di Azure SQL Database.

Untuk meminimalkan latensi jaringan, jalankan ostress.exe di wilayah Azure yang sama dengan database.

Langkah 7: Pemantauan pasca-implementasi

Pertimbangkan untuk memantau efek performa implementasi OLTP Dalam Memori Anda dalam produksi: