Fitur Query Store Force Plan tidak berfungsi

12

Fitur rencana kueri Toko Kueri tampaknya tidak menjalankan rencana.

Saya mengetahui Query Store - Dipaksa Tidak Selalu Berarti Dipaksa ; namun, rencana saya mungkin tidak berubah secara signifikan, tetapi pengoptimal kueri dapat terus memilih indeks yang salah, pilihan loop, dll.

Pada dasarnya: itu tidak menghormati pilihan rencana paksa saya. Saya sudah memaksakan banyak rencana dan Itu Tidak Berhasil .

  1. Ada 0 hitungan kegagalan atau alasan ketika saya melihat sys.query_store_plan force_failure_count.
  2. Acara diperpanjang query_store_plan_forcing_failedtidak menghasilkan apa pun. 0 Acara.

Misalnya, rencana yang dipaksakan pada 20.09. Hanya 1 kompilasi yang terjadi menggunakan rencana paksa.

Paket untuk Permintaan

Paket berbeda, satu menggunakan Hash Match bergabung dengan INDEX 1, yang lain menggunakan Loop Join dengan INDEX 2.

Rencana berbeda

Versi: Microsoft SQL Server 2016 (SP1-GDR) (KB3210089) - 13.0.4202.2 (X64)

Apa yang kulewatkan di sini?

Janis Veinbergs
sumber

Jawaban:

16

Dari sys.query_store_plan (Transact-SQL) (penekanan ditambahkan)

Merencanakan batasan pemaksaan

Query Store memiliki mekanisme untuk memberlakukan Query Optimizer untuk menggunakan rencana eksekusi tertentu. Namun, ada beberapa batasan yang dapat mencegah rencana untuk ditegakkan .

Pertama, jika rencana tersebut mengandung konstruksi berikut:

  • Masukkan pernyataan massal.
  • Referensi ke tabel eksternal
  • Operasi query atau teks lengkap yang didistribusikan
  • Penggunaan kueri Global
  • Kursor
  • Spesifikasi gabungan bintang tidak valid

Anda menggunakan kursor.


Anda sering dapat memaksa rencana kursor dengan panduan paket sebagai gantinya. Lihat Menggunakan USE PLAN Petunjuk Kueri tentang Pertanyaan dengan Kursor .

Dan ya, saya setuju bahwa situasi saat ini tidak membuat pengalaman pengguna terbaik. Saya berharap bahwa upaya untuk memaksakan rencana untuk sesuatu yang tidak dapat (saat ini) dipaksa akan meningkatkan kesalahan atau peringatan, atau mencatat sesuatu. Anda dapat mencatat item Umpan Balik untuk meminta peningkatan di area ini.


Pada SQL 2019 CTP 2.3 memaksa rencana eksekusi permintaan untuk kursor maju cepat dan statis didukung

Query Store sekarang mendukung kemampuan untuk memaksa rencana eksekusi permintaan untuk cursor T-SQL dan API yang maju dan cepat. Memaksa sekarang didukung melalui sp_query_store_force_planatau melalui laporan SQL Server Management Studio Query Store.

Paul White 9
sumber