Pemrosesan kueri cerdas dalam database SQL
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Keluarga fitur pemrosesan kueri cerdas (IQP) mencakup fitur dengan dampak luas yang meningkatkan performa beban kerja yang ada dengan upaya implementasi minimal untuk diadopsi. Grafik berikut merinci keluarga fitur IQP dan kapan pertama kali diperkenalkan untuk SQL Server. Semua fitur IQP tersedia di Azure SQL Managed Instance dan Azure SQL Database. Beberapa fitur bergantung pada tingkat kompatibilitas database.
Tonton video ini untuk gambaran umum pemrosesan kueri cerdas:
Untuk demo dan kode sampel fitur pemrosesan kueri cerdas (IQP) di GitHub, kunjungi https://aka.ms/IQPDemos.
Anda dapat membuat beban kerja memenuhi syarat secara otomatis untuk pemrosesan kueri cerdas dengan mengaktifkan tingkat kompatibilitas database yang berlaku untuk database. Anda dapat mengatur ini menggunakan Transact-SQL. Contohnya:
ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 160;
Tabel berikut merinci semua fitur pemrosesan kueri cerdas, bersama dengan persyaratan apa pun yang mereka miliki untuk tingkat kompatibilitas database. Untuk detail lengkap tentang semua fitur IQP, termasuk catatan rilis dan deskripsi yang lebih mendalam, lihat Detail fitur pemrosesan kueri cerdas (IQP).
Fitur IQP untuk Azure SQL Database dan SQL Server 2022 (16.x)
Fitur IQP | Didukung di Azure SQL Database | Didukung di SQL Server 2022 (16.x) | Deskripsi |
---|---|---|---|
Gabungan Adaptif (Mode Batch) | Ya, dimulai dengan tingkat kompatibilitas database 140 | Ya, mulai di SQL Server 2017 (14.x) dengan tingkat kompatibilitas database 140 | Gabungan adaptif secara dinamis memilih jenis gabungan selama runtime berdasarkan baris input aktual. |
Perkiraan Hitungan Berbeda | Ya | Ya, mulai di SQL Server 2019 (15.x) | Berikan perkiraan COUNT DISTINCT untuk skenario big data dengan manfaat performa tinggi dan jejak memori yang rendah. |
Perkiraan Persentil | Ya, dimulai dengan tingkat kompatibilitas database 110 | Ya, mulai SQL Server 2022 (16.x) dengan tingkat kompatibilitas 110 | Komputasi persentil dengan cepat untuk himpunan data besar dengan batas kesalahan berbasis peringkat yang dapat diterima untuk membantu membuat keputusan cepat dengan menggunakan perkiraan fungsi agregat persentil. |
Mode Batch di Rowstore | Ya, dimulai dengan tingkat kompatibilitas database 150 | Ya, mulai SQL Server 2019 (15.x) dengan tingkat kompatibilitas 150 | Berikan mode batch untuk beban kerja DW relasional terikat CPU tanpa memerlukan indeks penyimpan kolom. |
Umpan balik estimasi kardinalitas (CE) | Ya, dimulai dengan tingkat kompatibilitas database 160 | Ya, mulai SQL Server 2022 (16.x) dengan tingkat kompatibilitas 160 | Secara otomatis menyesuaikan perkiraan kardinalitas untuk kueri berulang untuk mengoptimalkan beban kerja di mana asumsi CE yang tidak efisien menyebabkan performa kueri yang buruk. Umpan balik CE akan mengidentifikasi dan menggunakan asumsi model yang lebih sesuai dengan kueri dan distribusi data tertentu untuk meningkatkan kualitas rencana eksekusi kueri. |
Tingkat umpan balik Paralelisme (DOP) | Ya, di Pratinjau, dimulai dengan tingkat kompatibilitas database 160 | Ya, mulai SQL Server 2022 (16.x) dengan tingkat kompatibilitas 160 | Secara otomatis menyesuaikan tingkat paralelisme untuk mengulangi kueri untuk mengoptimalkan beban kerja di mana paralelisme yang tidak efisien dapat menyebabkan masalah performa. Mengharuskan Penyimpanan Kueri diaktifkan. |
Eksekusi Interleaved | Ya, dimulai dengan tingkat kompatibilitas database 140 | Ya, mulai di SQL Server 2017 (14.x) dengan tingkat kompatibilitas database 140 | Menggunakan kardinalitas aktual dari fungsi bernilai tabel multi-pernyataan yang ditemui pada kompilasi pertama alih-alih tebakan tetap. |
Umpan balik pemberian memori (Mode Batch) | Ya, dimulai dengan tingkat kompatibilitas database 140 | Ya, mulai di SQL Server 2017 (14.x) dengan tingkat kompatibilitas database 140 | Jika kueri mode batch memiliki operasi yang meluap ke disk, tambahkan lebih banyak memori untuk eksekusi berturut-turut. Jika kueri membuang > 50% memori yang dialokasikan untuk itu, kurangi ukuran pemberian memori untuk eksekusi berturut-turut. |
Umpan balik pemberian memori (Mode Baris) | Ya, dimulai dengan tingkat kompatibilitas database 150 | Ya, mulai di SQL Server 2019 (15.x) dengan tingkat kompatibilitas database 150 | Jika kueri mode baris memiliki operasi yang meluap ke disk, tambahkan lebih banyak memori untuk eksekusi berturut-turut. Jika kueri membuang > 50% memori yang dialokasikan untuk itu, kurangi ukuran pemberian memori untuk eksekusi berturut-turut. |
Umpan balik pemberian memori (Persentil) | Ya, diaktifkan di semua database | Ya, dimulai dengan SQL Server 2022 (16.x)) dengan tingkat kompatibilitas database 140 | Mengatasi batasan umpan balik pemberian memori yang ada dengan cara yang tidak mengganggu dengan menggabungkan eksekusi kueri sebelumnya untuk menyempurnakan umpan balik. |
Persistensi umpan balik Peruntukan Memori | Ya, diaktifkan di semua database | Ya, dimulai dengan SQL Server 2022 (16.x)) dengan tingkat kompatibilitas database 140 | Menyediakan fungsionalitas baru untuk mempertahankan umpan balik pemberian memori. Mengharuskan Penyimpanan Kueri diaktifkan untuk database dan dalam mode READ_WRITE. |
Persistensi umpan balik CE | Ya, dimulai dengan tingkat kompatibilitas database 160 | Ya, dimulai dengan SQL Server 2022 (16.x)) dengan tingkat kompatibilitas database 160 | Mengharuskan Penyimpanan Kueri diaktifkan untuk database dan dalam mode READ_WRITE. |
Persistensi umpan balik DOP | Ya, di Pratinjau, dimulai dengan tingkat kompatibilitas database 160 | Ya, dimulai dengan SQL Server 2022 (16.x)) dengan tingkat kompatibilitas database 160 | Mengharuskan Penyimpanan Kueri diaktifkan untuk database dan dalam mode READ_WRITE. |
Memaksa rencana yang dioptimalkan | Ya | Ya, dimulai dengan SQL Server 2022 (16.x)). | Mengurangi overhead kompilasi untuk mengulangi kueri paksa. Untuk informasi selengkapnya, lihat Paket yang dioptimalkan memaksa dengan Penyimpanan Kueri. |
Skalar UDF Inlining | Ya, dimulai dengan tingkat kompatibilitas database 150 | Ya, mulai di SQL Server 2019 (15.x) dengan tingkat kompatibilitas database 150 | UDF skalar diubah menjadi ekspresi relasional yang setara yang "di-inlin" ke dalam kueri panggilan, sering menghasilkan perolehan performa yang signifikan. |
Pengoptimalan Rencana Sensitivitas Parameter | Ya, dimulai dengan tingkat kompatibilitas database 160 | Ya, mulai di SQL Server 2022 (16.x) dengan tingkat kompatibilitas database 160 | Pengoptimalan Paket Sensitif Parameter membahas skenario di mana satu paket cache untuk kueri berparameter tidak optimal untuk semua kemungkinan nilai parameter masuk, misalnya distribusi data yang tidak seragam. |
Kompilasi Ditangguhkan Variabel Tabel | Ya, dimulai dengan tingkat kompatibilitas database 150 | Ya, mulai di SQL Server 2019 (15.x) dengan tingkat kompatibilitas database 150 | Menggunakan kardinalitas aktual dari variabel tabel yang ditemui pada kompilasi pertama alih-alih tebakan tetap. |
Fitur IQP untuk Azure SQL Managed Instance
Fitur IQP | Didukung di Azure SQL Managed Instance | Deskripsi |
---|---|---|
Gabungan Adaptif (Mode Batch) | Ya, dimulai dengan tingkat kompatibilitas database 140 | Gabungan adaptif secara dinamis memilih jenis gabungan selama runtime berdasarkan baris input aktual. |
Perkiraan Hitungan Berbeda | Ya | Berikan perkiraan COUNT DISTINCT untuk skenario big data dengan manfaat performa tinggi dan jejak memori yang rendah. |
Perkiraan Persentil | Ya, dimulai dengan tingkat kompatibilitas database 110 | Komputasi persentil dengan cepat untuk himpunan data besar dengan batas kesalahan berbasis peringkat yang dapat diterima untuk membantu membuat keputusan cepat dengan menggunakan perkiraan fungsi agregat persentil. |
Mode Batch di Rowstore | Ya, dimulai dengan tingkat kompatibilitas database 150 | Berikan mode batch untuk beban kerja DW relasional terikat CPU tanpa memerlukan indeks penyimpan kolom. |
Umpan balik estimasi kardinalitas (CE) | Ya, dimulai dengan tingkat kompatibilitas database 160 | Secara otomatis menyesuaikan perkiraan kardinalitas untuk kueri berulang untuk mengoptimalkan beban kerja di mana asumsi CE yang tidak efisien menyebabkan performa kueri yang buruk. Umpan balik CE akan mengidentifikasi dan menggunakan asumsi model yang lebih sesuai dengan kueri dan distribusi data tertentu untuk meningkatkan kualitas rencana eksekusi kueri. |
Tingkat umpan balik Paralelisme (DOP) | Tanpa | Secara otomatis menyesuaikan tingkat paralelisme untuk mengulangi kueri untuk mengoptimalkan beban kerja di mana paralelisme yang tidak efisien dapat menyebabkan masalah performa. Mengharuskan Penyimpanan Kueri diaktifkan. |
Eksekusi Interleaved | Ya, dimulai dengan tingkat kompatibilitas database 140 | Menggunakan kardinalitas aktual dari fungsi bernilai tabel multi-pernyataan yang ditemui pada kompilasi pertama alih-alih tebakan tetap. |
Umpan balik pemberian memori (Mode Batch) | Ya, dimulai dengan tingkat kompatibilitas database 140 | Jika kueri mode batch memiliki operasi yang meluap ke disk, tambahkan lebih banyak memori untuk eksekusi berturut-turut. Jika kueri membuang > 50% memori yang dialokasikan untuk itu, kurangi ukuran pemberian memori untuk eksekusi berturut-turut. |
Umpan balik pemberian memori (Mode Baris) | Ya, dimulai dengan tingkat kompatibilitas database 150 | Jika kueri mode baris memiliki operasi yang meluap ke disk, tambahkan lebih banyak memori untuk eksekusi berturut-turut. Jika kueri membuang > 50% memori yang dialokasikan untuk itu, kurangi ukuran pemberian memori untuk eksekusi berturut-turut. |
Umpan balik pemberian memori (Persentil) | Tanpa | Mengatasi batasan umpan balik pemberian memori yang ada dengan cara yang tidak mengganggu dengan menggabungkan eksekusi kueri sebelumnya untuk menyempurnakan umpan balik. |
Peruntukan Memori, CE, dan persistensi umpan balik DOP | Ya, dimulai dengan tingkat kompatibilitas database 160 | Menyediakan fungsionalitas baru untuk mempertahankan umpan balik pemberian memori. Umpan balik CE dan DOP selalu dipertahankan. Mengharuskan Penyimpanan Kueri diaktifkan untuk database dan dalam mode READ_WRITE. |
Memaksa rencana yang dioptimalkan | Tanpa | Mengurangi overhead kompilasi untuk mengulangi kueri paksa. Untuk informasi selengkapnya, lihat Paket yang dioptimalkan memaksa dengan Penyimpanan Kueri. |
Skalar UDF Inlining | Ya, dimulai dengan tingkat kompatibilitas database 150 | UDF skalar diubah menjadi ekspresi relasional yang setara yang "di-inlin" ke dalam kueri panggilan, sering menghasilkan perolehan performa yang signifikan. |
Pengoptimalan Rencana Sensitivitas Parameter | Ya, dimulai dengan tingkat kompatibilitas database 160 | Pengoptimalan Rencana Sensitivitas Parameter membahas skenario di mana satu rencana cache untuk kueri berparameter tidak optimal untuk semua kemungkinan nilai parameter masuk, misalnya distribusi data yang tidak seragam. |
Kompilasi Ditangguhkan Variabel Tabel | Ya, dimulai dengan tingkat kompatibilitas database 150 | Menggunakan kardinalitas aktual dari variabel tabel yang ditemui pada kompilasi pertama alih-alih tebakan tetap. |
Fitur IQP untuk SQL Server 2019 (15.x)
Fitur IQP | Didukung di SQL Server 2019 (15.x) | Deskripsi |
---|---|---|
Gabungan Adaptif (Mode Batch) | Ya, mulai di SQL Server 2017 (14.x) dengan tingkat kompatibilitas database 140 | Gabungan adaptif secara dinamis memilih jenis gabungan selama runtime berdasarkan baris input aktual. |
Perkiraan Hitungan Berbeda | Ya | Berikan perkiraan COUNT DISTINCT untuk skenario big data dengan manfaat performa tinggi dan jejak memori yang rendah. |
Mode Batch di Rowstore | Ya, dimulai dengan tingkat kompatibilitas database 150 | Berikan mode batch untuk beban kerja DW relasional terikat CPU tanpa memerlukan indeks penyimpan kolom. |
Eksekusi Interleaved | Ya, dimulai dengan tingkat kompatibilitas database 140 | Gunakan kardinalitas aktual dari fungsi bernilai tabel multi-pernyataan yang ditemui pada kompilasi pertama alih-alih tebakan tetap. |
Umpan balik pemberian memori (Mode Batch) | Ya, dimulai dengan tingkat kompatibilitas database 140 | Jika kueri mode batch memiliki operasi yang meluap ke disk, tambahkan lebih banyak memori untuk eksekusi berturut-turut. Jika kueri membuang > 50% memori yang dialokasikan untuk itu, kurangi ukuran pemberian memori untuk eksekusi berturut-turut. |
Umpan balik pemberian memori (Mode Baris) | Ya, dimulai dengan tingkat kompatibilitas database 150 | Jika kueri mode baris memiliki operasi yang meluap ke disk, tambahkan lebih banyak memori untuk eksekusi berturut-turut. Jika kueri membuang > 50% memori yang dialokasikan untuk itu, kurangi ukuran pemberian memori untuk eksekusi berturut-turut. |
Skalar UDF Inlining | Ya, dimulai dengan tingkat kompatibilitas database 150 | UDF skalar diubah menjadi ekspresi relasional yang setara yang "di-inlin" ke dalam kueri panggilan, sering menghasilkan perolehan performa yang signifikan. |
Kompilasi Ditangguhkan Variabel Tabel | Ya, dimulai dengan tingkat kompatibilitas database 150 | Gunakan kardinalitas aktual dari variabel tabel yang ditemui pada kompilasi pertama alih-alih tebakan tetap. |
Fitur IQP untuk SQL Server 2017 (14.x)
Fitur IQP | Didukung di SQL Server 2017 (14.x) | Deskripsi |
---|---|---|
Gabungan Adaptif (Mode Batch) | Ya, mulai di SQL Server 2017 (14.x) dengan tingkat kompatibilitas database 140 | Gabungan adaptif secara dinamis memilih jenis gabungan selama runtime berdasarkan baris input aktual. |
Perkiraan Hitungan Berbeda | Ya | Berikan perkiraan COUNT DISTINCT untuk skenario big data dengan manfaat performa tinggi dan jejak memori yang rendah. |
Eksekusi Interleaved | Ya, dimulai dengan tingkat kompatibilitas database 140 | Gunakan kardinalitas aktual dari fungsi bernilai tabel multi-pernyataan yang ditemui pada kompilasi pertama alih-alih tebakan tetap. |
Umpan balik pemberian memori (Mode Batch) | Ya, dimulai dengan tingkat kompatibilitas database 140 | Jika kueri mode batch memiliki operasi yang meluap ke disk, tambahkan lebih banyak memori untuk eksekusi berturut-turut. Jika kueri membuang > 50% memori yang dialokasikan untuk itu, kurangi ukuran pemberian memori untuk eksekusi berturut-turut. |
Persyaratan Penyimpanan Kueri
Beberapa rangkaian fitur pemrosesan kueri cerdas mengharuskan Penyimpanan Kueri diaktifkan untuk menguntungkan database pengguna. Untuk mengaktifkan Penyimpanan Kueri, lihat Mengaktifkan Penyimpanan Kueri.
Fitur IQP | Mengharuskan Penyimpanan Kueri diaktifkan dan READ_WRITE |
---|---|
Gabungan Adaptif (Mode Batch) | No |
Perkiraan Hitungan Berbeda | No |
Perkiraan Persentil | No |
Mode Batch di Rowstore | No |
Umpan balik estimasi kardinalitas (CE) | Ya |
Tingkat umpan balik Paralelisme (DOP) | Ya |
Eksekusi Interleaved | No |
Umpan balik pemberian memori (Mode Batch) | No |
Umpan balik pemberian memori (Mode Baris) | No |
Umpan balik pemberian memori (Mode Persentil dan Persistensi) | Ya |
Memaksa rencana yang dioptimalkan | Ya |
Skalar UDF Inlining | No |
Pengoptimalan Rencana Sensitivitas Parameter | Tidak, tetapi direkomendasikan |
Kompilasi Ditangguhkan Variabel Tabel | No |
Konten terkait
Untuk detail lengkap tentang semua fitur IQP, termasuk catatan rilis dan deskripsi yang lebih mendalam, lihat Detail fitur pemrosesan kueri cerdas (IQP).
- Gabungan (SQL Server)
- Mode eksekusi
- Panduan arsitektur pemrosesan kueri
- Referensi Operator Logis dan Fisik Showplan
- Apa yang baru di SQL Server 2017
- Apa yang baru di SQL Server 2019
- Apa yang baru di SQL Server 2022
- Umpan balik pemberian memori
- Menunjukkan Pemrosesan Kueri Cerdas
- Lipatan Konstanta dan Evaluasi Ekspresi
- Demo pemrosesan kueri cerdas di GitHub
- Pusat Performa untuk Mesin Database SQL Server dan Azure SQL Database
- Memantau performa dengan menggunakan Penyimpanan Kueri
- Praktik terbaik untuk memantau beban kerja dengan Penyimpanan Kueri