Функція плану запиту магазину запитів не працює


12

Здається, функція плану зберігання запитів не застосовує план.

Мені відомо про магазин запитів - примусовий не завжди означає насильницький ; проте мій план може не змінитися незначно, але оптимізатор запитів може продовжувати вибирати неправильні індекси, вибір циклу тощо.

В основному: це не шанує мого вимушеного вибору плану. Я змусив багато планів, і це просто не працює .

  1. Коли я дивлюсь, є 0 підрахунків чи причин sys.query_store_plan force_failure_count.
  2. Розширена подія query_store_plan_forcing_failedнічого не приносить. 0 події

Наприклад, план, який був вимушений 20.09. Лише в 1 збірці було застосовано примусовий план.

Плани запиту

Плани дико відрізняються: один використовує Hash Match приєднатися до INDEX 1, а інший використовуючи Loop Join з INDEX 2.

Різні плани

Версія: Microsoft SQL Server 2016 (SP1-GDR) (KB3210089) - 13.0.4202.2 (X64)

Що я тут пропускаю?

Відповіді:


16

Від sys.query_store_plan (Transact-SQL) (наголос додано)

План примусових обмежень

У магазині запитів є механізм примусового оптимізатора запитів використовувати певний план виконання. Однак є деякі обмеження, які можуть перешкоджати виконанню плану .

По-перше, якщо план містить такі конструкції:

  • Вставте групову заяву.
  • Посилання на зовнішню таблицю
  • Розподілений запит або повнотекстові операції
  • Використання глобальних запитів
  • Курсори
  • Недійсна специфікація приєднання зірки

Ви використовуєте курсор.


Часто ви можете змусити план курсору замість керівництва плану. Див. Розділ Використання плану підказки USE PLAN щодо запитів з курсорами .

І так, я погоджуюся, що нинішня ситуація не сприяє кращому досвіду користувача. Я би сподівався, що спроба насильницького плану щось, що не може (на даний момент) бути вимушеним, призведе до помилки чи попередження або щось записуватиме. Ви можете увійти в елемент відгуку, щоб подати запит на поліпшення в цій області.


Станом на SQL 2019 CTP 2.3 форсування запиту плану виконання для швидкого курсори Forward і статичного підтримуються

Магазин запитів тепер підтримує можливість форсувати плани виконання запитів для швидких вперед та статичних курсорів T-SQL та API. Тепер форсування підтримується через sp_query_store_force_planабо через звіти SQL Server Management Studio Query Store.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.