Pemrosesan kueri cerdas dalam database SQL

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure 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.

Diagram keluarga fitur Pemrosesan Kueri Cerdas dan ketika pertama kali diperkenalkan ke SQL Server.

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) Tanpa 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) Tanpa 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 Tanpa 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 Tanpa 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 Tanpa 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 Tanpa 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) Tanpa 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 Tanpa 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

Untuk detail lengkap tentang semua fitur IQP, termasuk catatan rilis dan deskripsi yang lebih mendalam, lihat Detail fitur pemrosesan kueri cerdas (IQP).