KB3189813 - Actualizare introduce argumentul indiciu de interogare USE HINT în SQL Server 2016

Se aplică la
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Express - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Web - duplicate (do not use)

Rezumat

Această actualizare introduce un nou argument indiciu de interogare, USE HINT, care vă permite să conduceți optimizatorul de interogări fără acreditări elevate sau fără a fi membru al rolului de server sysadmin. Sintaxa acestui nou indiciu de interogare seamănă cu următoarea:

<query_hint > ::=
{
USE HINT(N'key' [ [, ]...n ])
}

      

Această actualizare introduce, de asemenea, următoarele opțiuni de indiciu care pot fi utilizate cu argumentul USE HINT.

Opțiune Semnalizare de urmărire echivalentă Descriere Se aplică la
ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS TF 9476 Determină ca SQL Server să genereze un plan de interogare utilizând ipoteza de izolare simplă în locul ipotezei implicite de conținut de bază pentru asocieri, sub modelul de estimare a cardinalității pentru optimizarea interogărilor din SQL Server 2014 (12.x) sau o versiune mai recentă.
ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES TF 4137 Determină SQL Server să genereze un plan utilizând o selectivitate minimă atunci când estimează predicatele AND pentru filtre pentru a ține cont de corelare. Acest nume de sugestie este paralel cu semnalizarea de urmărire 4137 atunci când este utilizat cu modelul de estimare a cardinalității din SQL Server 2012 (11.x) și versiunile anterioare și are un efect similar atunci când semnalizarea de urmărire 9471 este utilizată cu modelul de estimare a cardinalității de SQL Server 2014 (12.x) sau o versiune ulterioară.
DISABLE_BATCH_MODE_ADAPTIVE_JOINS Dezactivează asocierile adaptive în modul batch. începând din SQL Server 2017
DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK Dezactivează feedback-ul de acordare a memoriei pentru modul batch. începând din SQL Server 2017
DISABLE_DEFERRED_COMPILATION_TV Dezactivează compilarea amânată a variabilelor de tabel. începând din SQL Server 2019
DISABLE_INTERLEAVED_EXECUTION_TVF Dezactivează executarea intercalată pentru funcții cu valori de tabel cu instrucțiuni multiple. începând din SQL Server 2017
DISABLE_OPTIMIZED_NESTED_LOOP TF 2340 Instruiește procesorul de interogări să nu utilizeze o operațiune de sortare (sortare lot) pentru asocieri de bucle imbricate optimizate atunci când generează un plan de interogare.
DISABLE_OPTIMIZER_ROWGOAL TF 4138 Determină SQL Server să genereze un plan care nu utilizează modificări ale obiectivelor rândurilor cu interogările care conțin aceste cuvinte cheie:

  • TOP
  • OPȚIUNE (RAPID N)
  • IN
  • EXISTS
DISABLE_PARAMETER_SNIFFING TF 4136 Instruiește instrumentul de optimizare a interogărilor să utilizeze distribuția medie a datelor în timp ce compilați o interogare cu unul sau mai mulți parametri. Această instrucțiune face planul de interogare independent de valoarea parametrului care a fost utilizată prima dată când a fost compilată interogarea. Utilizați acest indiciu pentru a înlocui setarea de configurare prin domeniu bază de date PARAMETER_SNIFFING=OFF.
DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK Dezactivează feedbackul de acordare a memoriei în modul rând. începând din SQL Server 2019
DISABLE_TSQL_SCALAR_UDF_INLINING Dezactivează inlinizarea UDF scalară. începând din SQL Server 2019
DISALLOW_BATCH_MODE Dezactivează executarea în modul de lot. începând din SQL Server 2019
ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS TF 4139 Activează statistici rapide generate automat (modificare histogramă) pentru orice coloană de index inițială pentru care este necesară o estimare a cardinalității. Histograma utilizată pentru a estima cardinalitatea va fi ajustată la momentul compilării interogării pentru a ține cont de valoarea maximă sau minimă reală a acestei coloane.
ENABLE_QUERY_OPTIMIZER_HOTFIXES TF 4199 Activează remedierile rapide ale instrumentului de optimizare a interogărilor (modificări lansate în actualizările cumulative și pachetele Service Pack SQL Server). Utilizați acest indiciu pentru a înlocui setarea de configurare prin domeniu bază de date QUERY_OPTIMIZER_HOTFIXES=ON.
FORCE_DEFAULT_CARDINALITY_ESTIMATION TF 9481 Forțează instrumentul de optimizare a interogărilor să utilizeze modelul de estimare a cardinalității care corespunde nivelului de compatibilitate al bazei de date curente. Utilizați acest indiciu pentru a înlocui setarea de configurare prin domeniu bază de date LEGACY_CARDINALITY_ESTIMATION=ON.
FORCE_LEGACY_CARDINALITY_ESTIMATION TF 9481 Impune instrumentului de optimizare a interogărilor să utilizeze modelul de estimare a cardinalității SQL Server 2012 (11.x) și versiunile anterioare. Utilizați acest indiciu pentru a înlocui setarea de configurare prin domeniu bază de date LEGACY_CARDINALITY_ESTIMATION=ON.
QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n Forțează comportamentul optimizatorului de interogare la nivel de interogare. Acest comportament se întâmplă ca și cum interogarea ar fi compilată cu nivelul de compatibilitate al bazei de date n, unde n este un nivel de compatibilitate acceptat al bazei de date. Consultați sys.dm_exec_valid_use_hints pentru o listă de valori acceptate în prezent pentru n. începând din SQL Server 2017 (14.x) CU10

Pentru mai multe informații, consultați Indicii (Transact-SQL) - Interogare.

Mai multe informații

Această actualizare este inclusă în pachetul Service Pack 1 pentru SQL Server 2016.

Despre compilările SQL Server 2016

Fiecare versiune nouă pentru SQL Server 2016 conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu compilarea anterioară. Vă recomandăm să instalați cea mai recentă versiune pentru SQL Server 2016.

Scenariile în care trebuie menționat comportamentul optimizatorului de interogare (QO) SQL Server sunt destul de obișnuite și, în mod tradițional, sunt tratate utilizând mai multe semnalizări de urmărire (documentate și nedocumentate). Totuși, atunci când semnalizările de urmărire sunt setate la nivel global, acestea pot avea un efect negativ asupra altor soluții de lucru. În plus, activarea lor per sesiune nu este practică cu aplicațiile existente, iar activarea lor per interogare cu OPTION QUERYTRACEON necesită apartenența la rolul de server fix sysadmin. (Deși puteți evita acest comportament utilizând un ghid de plan sau o procedură stocată, acreditările elevate sunt în continuare necesare.)

Semnalizările de urmărire sunt utilizate pentru a seta temporar anumite caracteristici ale serverului sau pentru a dezactiva un anumit comportament. Acestea pot fi dificil de gestionat și de înțeles.

Pentru informații despre semnalizările de urmărire, consultați subiectul Semnalizările de urmărire (Transact-SQL) de pe site-ul web Rețea Microsoft pentru dezvoltatori (MSDN).

Referințe

Aflați despre terminologia pe care o utilizează Microsoft pentru a descrie actualizările de software.