Mengakses Tabel yang Dioptimalkan Memori Menggunakan Transact-SQL yang Ditafsirkan
Berlaku untuk: SQL Server Azure SQL DatabaseAzure Synapse Analytics Analytics Platform System (PDW)
Hanya dengan beberapa pengecualian, Anda dapat mengakses tabel yang dioptimalkan memori menggunakan kueri Transact-SQL atau operasi DML apa pun (pilih, sisipkan, perbarui, atau hapus), batch ad hoc, dan modul SQL seperti prosedur tersimpan, fungsi nilai tabel, pemicu, dan tampilan.
Transact-SQL yang ditafsirkan mengacu pada batch Transact-SQL atau prosedur tersimpan selain prosedur tersimpan yang dikompilasi secara asli. Akses Transact-SQL yang ditafsirkan ke tabel yang dioptimalkan memori disebut sebagai akses interop.
Dimulai dengan SQL Server 2016 (13.x), kueri dalam Transact-SQL yang ditafsirkan dapat memindai tabel yang dioptimalkan memori secara paralel, bukan hanya dalam mode serial.
Tabel yang dioptimalkan memori juga dapat diakses menggunakan prosedur tersimpan yang dikompilasi secara asli. Prosedur tersimpan yang dikompilasi secara asli direkomendasikan untuk operasi OLTP kritis performa.
Akses Transact-SQL yang ditafsirkan direkomendasikan untuk skenario ini:
Kueri ad hoc dan tugas administratif.
Kueri pelaporan, yang biasanya menggunakan konstruksi yang tidak tersedia dalam prosedur tersimpan yang dikompilasi secara asli (seperti fungsi jendela , kadang-kadang disebut sebagai fungsi OVER ).
Untuk memigrasikan bagian penting performa aplikasi Anda ke tabel yang dioptimalkan memori, dengan perubahan kode aplikasi minimal (atau tidak). Anda berpotensi melihat peningkatan performa dari tabel migrasi. Jika Anda kemudian memigrasikan prosedur tersimpan ke prosedur tersimpan yang dikompilasi secara asli, Anda mungkin melihat peningkatan performa lebih lanjut.
Ketika pernyataan Transact-SQL tidak tersedia untuk prosedur tersimpan yang dikompilasi secara asli.
Namun, konstruksi Transact-SQL berikut ini tidak didukung dalam prosedur tersimpan Transact-SQL yang ditafsirkan yang mengakses data dalam tabel yang dioptimalkan memori.
Luas | Tidak didukung |
---|---|
Akses ke tabel | POTONG TABEL MERGE (tabel yang dioptimalkan memori sebagai target) Kursor dinamis dan set kunci (ini secara otomatis turun menjadi statis). Akses dari modul CLR, menggunakan koneksi konteks. Mereferensikan tabel yang dioptimalkan memori dari tampilan terindeks. |
Lintas database | Kueri lintas database Transaksi lintas database Server yang ditautkan |
Petunjuk Tabel
Untuk informasi selengkapnya tentang petunjuk tabel, lihat. Petunjuk Tabel (Transact-SQL). SNAPSHOT ditambahkan untuk mendukung OLTP Dalam Memori.
Petunjuk tabel berikut ini tidak didukung saat mengakses tabel yang dioptimalkan memori menggunakan Transact-SQL yang ditafsirkan.
HOLDLOCK
PAGLOCK
READUNCOMMITTED
TABLOCKXX
IGNORE_CONSTRAINTS
READCOMMITTED
ROWLOCK
UPDLOCK
IGNORE_TRIGGERS
READCOMMITTEDLOCK
SPATIAL_WINDOW_MAX_CELLS = bilangan bulat
XLOCK
SEKARANGAIT
READPAST
TABLOCK
Saat mengakses tabel yang dioptimalkan memori dari transaksi eksplisit atau implisit menggunakan Transact-SQL yang ditafsirkan, Anda harus melakukan setidaknya salah satu hal berikut:
Tentukan petunjuk tabel tingkat isolasi seperti SNAPSHOT, REPEATABLEREAD, atau SERIALIZABLE.
Atur opsi database MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT ke AKTIF.
Petunjuk tabel tingkat isolasi tidak diperlukan untuk tabel yang dioptimalkan memori yang diakses oleh kueri yang berjalan dalam mode penerapan otomatis.
Lihat Juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk