Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Ketika pembuatan cache tataan hasil diaktifkan, kumpulan SQL khusus secara otomatis meng-cache hasil kueri dalam database pengguna untuk penggunaan berulang. Hal ini memungkinkan eksekusi kueri berikutnya untuk mendapatkan hasil langsung dari cache yang bertahan sehingga penghitungan ulang tidak diperlukan. Pembuatan cache tataan hasil meningkatkan performa kueri dan mengurangi penggunaan sumber daya komputasi. Selain itu, kueri yang menggunakan hasil set yang di-cache tidak menggunakan slot konkurensi apa pun dan dengan demikian tidak dihitung berdasarkan batas konkurensi yang ada. Untuk keamanan, pengguna hanya dapat mengakses hasil yang di-cache jika mereka memiliki izin akses data yang sama dengan pengguna yang membuat hasil yang disinggahkan. Penembolokan set hasil adalah OFF secara default di database dan tingkat sesi.
Catatan
Penembolokan set hasil tidak boleh digunakan bersama dengan DECRYPTBYKEY. Jika fungsi kriptografi ini harus digunakan, pastikan Anda menonaktifkan cache set hasil (baik di tingkat sesi atau tingkat basis data) pada saat eksekusi.
Perintah kunci
Mengaktifkan/Menonaktifkan pembuatan cache tataan hasil untuk database pengguna
Mengaktifkan/Menonaktifkan pembuatan cache tataan hasil pada sesi
Periksa ukuran tataan hasil yang di-cache
Apa yang tidak di-cache
Setelah pembuatan cache tataan hasil diaktifkan untuk database, hasil di-cache untuk semua kueri hingga cache penuh, kecuali untuk kueri ini:
- Kueri dengan fungsi bawaan atau ekspresi runtime yang tidak deterministik bahkan ketika tidak ada perubahan dalam data atau kueri tabel dasar. Misalnya, DateTime.Now(), GetDate().
- Kueri menggunakan fungsi yang ditentukan pengguna
- Kueri menggunakan tabel dengan keamanan tingkat baris
- Kueri mengembalikan data dengan ukuran baris lebih besar dari 64KB
- Kueri menampilkan data berukuran besar (>10GB)
Catatan
- Beberapa fungsi non-deterministik dan ekspresi runtime dapat menjadi deterministik terhadap kueri berulang terhadap data yang sama. Misalnya, ROW_NUMBER().
- Gunakan ORDER BY dalam kueri Anda jika urutan/urutan baris dalam tataan hasil kueri penting untuk logika aplikasi Anda.
- Jika data dalam kolom ORDER BY tidak unik, tidak ada jaminan urutan baris pada barisan memiliki nilai yang sama di kolom ORDER BY, terlepas dari apakah pembuatan cache tataan hasil diaktifkan atau dinonaktifkan.
Penting
Operasi untuk membuat cache rangkaian hasil dan mengambil data dari cache terjadi pada node kontrol instans kumpulan SQL khusus. Saat penembolokan tataan hasil AKTIF, menjalankan kueri yang mengembalikan tataan hasil besar (misalnya, >1 GB) dapat menyebabkan pembatasan tinggi pada node kontrol dan memperlambat respons kueri keseluruhan pada instans. Kueri tersebut biasanya digunakan selama eksplorasi data atau operasi ETL. Untuk menghindari stres node kontrol dan menyebabkan masalah kinerja, pengguna harus menonaktifkan pembuatan cache tataan hasil pada database sebelum menjalankan jenis kueri tersebut.
Jalankan kueri ini untuk waktu yang diambil oleh operasi pembuatan cache tataan hasil untuk kueri:
SELECT step_index, operation_type, location_type, status, total_elapsed_time, command
FROM sys.dm_pdw_request_steps
WHERE request_id = <'request_id'>;
Berikut adalah contoh output untuk kueri yang dijalankan dengan pembuatan cache tataan hasil dinonaktifkan.
Berikut adalah contoh output untuk kueri yang dijalankan dengan pembuatan cache tataan hasil diaktifkan.
Ketika hasil yang di-cache digunakan
Kumpulan tataan hasil yang di-cache digunakan kembali untuk kueri jika semua persyaratan berikut ini terpenuhi:
- Pengguna yang menjalankan kueri memiliki akses ke semua tabel yang direferensikan dalam kueri.
- Ada kecocokan persis antara kueri baru dan kueri sebelumnya yang menghasilkan di-cache tataan hasil.
- Tidak ada perubahan data atau skema dalam tabel tempat tataan hasil di-cache dihasilkan.
Jalankan perintah ini untuk memeriksa apakah kueri dijalankan yang menghasilkan hit atau kehilangan cache. Kolom result_cache_hit mengembalikan 1 untuk hit singgahan, 0 untuk cache hilang, dan nilai negatif dikarenakan pembuatan cache tataan hasil tidak digunakan. Periksa sys.dm_pdw_exec_requests untuk detailnya.
SELECT request_id, command, result_cache_hit FROM sys.dm_pdw_exec_requests
WHERE request_id = <'Your_Query_Request_ID'>
Mengelola hasil singgahan
Ukuran maksimum dari tataan hasil cache adalah 1 TB per database. Hasil singgahan secara otomatis tidak valid saat data kueri yang mendasarinya berubah.
Penggusuran cache dikelola oleh kumpulan SQL khusus secara otomatis mengikuti jadwal ini:
- Setiap 48 jam jika kumpulan tataan hasil belum digunakan atau telah dibatalkan.
- Ketika cache tataan hasil mendekati ukuran maksimum.
Pengguna dapat mengosongkan seluruh cache tataan hasil secara manual dengan menggunakan salah satu opsi berikut:
- Menonaktifkan fitur cache tataan hasil untuk database
- Jalankan DBCC DROPRESULTSETCACHE saat tersambung ke database
Menjeda database tidak akan mengosongkan tataan hasil yang di-cache.
Langkah berikutnya
Untuk tips pengembangan selengkapnya, buka gambaran pengembangan.