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:
Sambungkan ke database pengujian dengan menggunakan SQL Server Management Studio (SSMS).
Untuk menghindari perlunya
WITH (SNAPSHOT)
opsi dalam kueri, atur opsi databaseMEMORY_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 di SSMS.
- Gunakan perintah T-SQL.
Wizard Pengoptimalan Memori yang berguna di SQL Server Management Studio
Untuk menggunakan opsi migrasi ini:
Sambungkan ke database dengan SQL Server Management Studio.
Di Object Explorer, klik kanan pada tabel, lalu pilih Memory Optimization Advisor.
Wizard Tabel Memory Optimizer Advisor ditampilkan.
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:
- Daftar periksa pengoptimalan memori di Memory Optimization Advisor.
- Konstruksi Transact-SQL Tidak Didukung oleh OLTP Dalam Memori.
- Memigrasi ke OLTP Dalam Memori.
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:
- Sambungkan ke database pengujian Anda dengan menggunakan SSMS.
- 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.
- Di jendela skrip, tambahkan
WITH (MEMORY_OPTIMIZED = ON)
keCREATE TABLE
pernyataan . Untuk informasi selengkapnya, lihat Sintaks untuk tabel memori yang dioptimalkan. - Jika ada indeks CLUSTERED, ubah ke NONCLUSTERED.
- Ganti nama tabel yang sudah ada dengan menggunakan sp_rename.
- Buat salinan tabel baru yang dioptimalkan memori dengan menjalankan skrip yang diedit
CREATE TABLE
. - 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_LEVEL
Untuk ,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 dalamsys.syslanguages
tampilan, diname
kolom . Contohnya,N'us_english'
.
Cara memigrasikan prosedur tersimpan untuk menggunakan kompilasi asli
Langkah-langkah migrasi adalah:
CREATE PROCEDURE
Dapatkan skrip ke prosedur tersimpan reguler (ditafsirkan).- Regenerasi header-nya agar sesuai dengan templat sebelumnya.
- 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.
- Ganti nama prosedur tersimpan lama dengan menggunakan sp_rename, atau letakkan.
- 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:
- Pantau penyimpanan OLTP dalam memori.
- Pemantauan menggunakan tampilan manajemen dinamis.