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.
Berlaku untuk: SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
Perkiraan kardinalitas yang tidak akurat sering menyebabkan performa yang buruk selama pengoptimalan kueri. Umpan balik estimasi kardinalitas (CE) untuk ekspresi memperluas kerangka kerja yang dimulai oleh fitur umpan balik CE. Tujuannya adalah untuk meningkatkan perkiraan kardinalitas untuk ekspresi berulang. Fitur umpan balik untuk ekspresi belajar dari pelaksanaan ekspresi sebelumnya di seluruh kueri, untuk menemukan pilihan model CE yang sesuai dan menerapkan hasil pembelajaran pada eksekusi ekspresi tersebut di masa mendatang. Seperti umpan balik CE, rekomendasi model diuji dan diterapkan secara otomatis ke eksekusi kueri di masa mendatang.
Umpan balik untuk fitur ekspresi mengidentifikasi dan menggunakan asumsi model yang lebih sesuai dengan ekspresi kueri dan distribusi data tertentu, yang pada gilirannya meningkatkan kualitas rencana eksekusi kueri. Saat ini, fitur ekspresi umpan balik dapat mengidentifikasi operator rencana di mana perkiraan jumlah baris dan jumlah baris aktual sangat berbeda. Umpan balik diterapkan ke ekspresi dalam kueri ketika kesalahan estimasi model yang signifikan terjadi, dan ada model alternatif yang layak untuk dicoba.
Versi Mesin Database yang berbeda menggunakan asumsi model CE yang berbeda , berdasarkan bagaimana data didistribusikan dan dikueri.
Gunakan umpan balik CE untuk ekspresi
Umpan Balik CE untuk Ekspresi mengawasi eksekusi kueri dan mengidentifikasi subekspresi yang secara konsisten menyebabkan kesalahan estimasi kardinalitas. Umpan balik dihasilkan berdasarkan pola yang diamati dan diterapkan selama kompilasi kueri untuk meningkatkan akurasi estimasi.
Prasyarat dan konfigurasi
Untuk menggunakan Umpan Balik CE untuk Ekspresi, prasyarat berikut harus dipenuhi:
- Database harus menggunakan tingkat kompatibilitas 160 atau yang lebih baru.
- Konfigurasi
CE_FEEDBACK_FOR_EXPRESSIONScakupan database harus diaktifkan (diaktifkan secara default). - Untuk memeriksa status konfigurasi cakupan database saat ini:
SELECT name,
value,
value_for_secondary
FROM sys.database_scoped_configurations
WHERE name = 'CE_FEEDBACK_FOR_EXPRESSIONS';
Fitur ini dapat diaktifkan pada database dengan perintah konfigurasi lingkup database berikut:
ALTER DATABASE SCOPED CONFIGURATION SET CE_FEEDBACK_FOR_EXPRESSIONS = ON;
Untuk menonaktifkan fitur umpan balik untuk ekspresi dalam basis data, nonaktifkan konfigurasi yang lingkupnya basis data: CE_FEEDBACK_FOR_EXPRESSIONS
ALTER DATABASE SCOPED CONFIGURATION SET CE_FEEDBACK_FOR_EXPRESSIONS = OFF;
Cara kerjanya
Meskipun sidik jari bukan konsep baru dengan Mesin Database SQL Server, sidik jari dalam konteks fitur umpan balik untuk ekspresi mengacu pada kombinasi tanda tangan komputasi dari dalam ekspresi. Misalnya, analis bisnis dalam bisnis fiktif mungkin ingin mendapatkan informasi tentang pesanan pelanggan mereka di mana pelanggan tersebut menghabiskan lebih dari $ 10.000. Pernyataan pemilihan yang melibatkan pengumpulan data dari tabel Pelanggan yang juga bergabung ke tabel Pesanan mungkin merupakan salah satu cara untuk melihat jenis data ini:
SELECT *
FROM Customer AS C
INNER JOIN Orders AS O
ON C.custkey = O.o_custkey
WHERE O.o_totalprice > 10000;
Untuk kueri ini, pengoptimal kueri mungkin memilih untuk mendapatkan data dari setiap tabel - Customer, diikuti oleh Orders, kemudian memilih semua kolom terkait dari kedua tabel, dan menggabungkan data (dengan filter) dimana totalprice dari pesanan lebih besar dari $10.000.
Setiap ekspresi logis seperti filter atau gabungan dalam rencana kueri menghasilkan tanda tangan yang berkontribusi pada sidik jari. Umpan Balik CE untuk ekspresi menggunakan sidik jari ini untuk mempelajari dan menerapkan umpan balik di seluruh kueri yang berbagi subekspresi serupa, bahkan jika struktur kueri keseluruhan berbeda.
Fitur ini berfokus pada ekspresi dengan overestimasi/underestimasi kardinalitas yang konsisten dalam semua kueri. Ini menganalisis dua pola beban kerja berbeda yang saat ini tidak memenuhi syarat untuk umpan balik CE:
Beban kerja tanpa eksekusi berulang, tetapi dengan pola ekspresi berulang. Misalnya, pola gabungan yang umum digunakan.
Kueri di mana satu bagian kueri mungkin mendapat manfaat dari model CE yang berbeda dari bagian lain dari kueri yang sama. Misalnya, gabungan antara tabel
AdanBmungkin memerlukan penahanan sederhana, dan gabungan antara tabelCdanD, yang mungkin memerlukan penahanan dasar.
Fitur umpan balik pada ekspresi menerapkan asumsi penyaringan dan penggabungan untuk memperbaiki masalah kesalahan estimasi, seperti:
Filters:
ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATESASSUME_PARTIAL_CORRELATION_FOR_FILTER_ESTIMATESASSUME_FULL_INDEPENDENCE_FOR_FILTER_ESTIMATES
Joins:
ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS- Asumsi penahanan dasar (tidak ada petunjuk yang harus diteruskan)
Asumsi ini mencerminkan strategi model CE yang berbeda, seperti penahanan dan kemandirian. Untuk latar belakang konseptual lainnya, lihat Umpan Balik Estimasi Kardinalitas yang Dijelaskan oleh Kate Smith dan Estimasi Kardinalitas untuk Kolom Berkorelasi di SQL Server 2016.
Siklus hidup petunjuk
Petunjuk umpan balik menunjukkan kemajuan melalui status berikut:
- Pemantauan: Sistem mengamati eksekusi berulang subekspresi dan melacak apakah perkiraan kardinalitas yang keliru berlanjut.
- Menerapkan: Jika kesalahan penilaian berlanjut, petunjuk umpan balik dapat dihasilkan dan diterapkan selama kompilasi kueri untuk menyesuaikan model CE.
- Diblokir: Jika petunjuk yang diterapkan menghasilkan perkiraan kardinalitas suboptimal, petunjuk tersebut diblokir dari penggunaan di masa mendatang.
Siklus hidup ini memastikan bahwa umpan balik hanya diterapkan ketika bermanfaat dan menghindari regresi dalam kualitas estimasi.
Perlindungan regresi
Umpan balik CE untuk ekspresi mencakup perlindungan regresi. Jika petunjuk menyebabkan perkiraan kardinalitas yang lebih buruk dari sebelumnya, itu diblokir. Namun, perlindungan ini terbatas pada estimasi kardinalitas dan tidak mengevaluasi waktu eksekusi kueri. Untuk regresi terkait eksekusi/runtime, koreksi rencana otomatis mungkin mengintervensi. Jika fitur koreksi rencana otomatis tidak diaktifkan, tindakan yang akan dilakukan oleh fitur tersebut akan direkam dan tersedia melalui menggunakan kueri pada tampilan manajemen dinamis sys.dm_db_tuning_recommendations.
Telemetri dan pemantauan
Aktivitas Umpan Balik CE untuk Ekspresi dapat dipantau menggunakan alat berikut:
- Peristiwa yang diperluas:
adhoc_ce_feedback_query_level_telemetryquery_adhoc_ce_feedback_expression_hintquery_adhoc_ce_feedback_hint
Peristiwa tambahan CE Feedback query_ce_feedback_begin_analysis dan query_ce_feedback_telemetry ini juga dapat berguna saat melacak aktivitas fitur.
Data sidik jari disimpan sementara di pengelola memori khusus bernama
AdHocCEFeedbackCache. Cache ini dapat diakses melalui tampilansys.dm_exec_ce_feedback_cachekatalog sistem .Integrasi Showplan
Saat umpan balik CE untuk petunjuk ekspresi diterapkan, rencana kueri menyertakan atribut
CardinalityFeedbackdalam Showplan XML. Tag ini menunjukkan bahwa umpan balik digunakan untuk menyesuaikan perkiraan kardinalitas untuk subekspresi tertentu.
Cache dan persistensi
Umpan balik yang dipertahankan disimpan dalam tabel Penyimpanan Kueri internal (sys.plan_persist_ce_feedback_for_expressions) dan dimuat ulang saat startup. Ini memastikan sistem tidak perlu mempelajari kembali umpan balik untuk sidik jari yang sudah pernah ditemuinya. Mekanisme persistensi cache bersifat lossy, yang berarti umpan balik hanya disimpan ke disk secara berkala. Frekuensi persistensi saat ini tidak dapat dikonfigurasi.
Jika instans SQL Server dimulai ulang atau memori dibersihkan sebelum siklus persistensi berikutnya, umpan balik yang dihasilkan sejak flush terakhir dapat hilang.
Limitations
Persistensi saat ini tidak tersedia untuk Query Store pada replika sekunder yang dapat dibaca. Umpan balik CE untuk ekspresi dapat menerapkan umpan balik secara berbeda pada replika utama dan pada replika sekunder. Namun, umpan balik tidak bertahan pada replika sekunder dan hanya ada dalam cache berbasis memori dalam skenario tersebut. Jika terjadi peristiwa failover sistem, umpan balik yang telah dikumpulkan pada salah satu basis data sekunder yang dapat dibaca akan hilang.