Rezime
Ova ispravka uvodi novi argument saveta za upite, USE HINT, koji vam omogućava da vozite optimizator upita bez podignutih akreditiva ili bez da budete član uloge sysadmin servera. Sintaksa ovog novog podsetnika upita podseća na sledeće:
<query_hint > ::={USE HINT(N'key' [ [, ]...n ])}
Ova ispravka takođe uvodi sledeće opcije saveta koje se mogu koristiti sa argumentom USE HINT.
Opciju |
Ekvivalentna zastavica za praćenje |
Opis |
Primenjuje se na |
---|---|---|---|
ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS |
TF 9476 |
Dovodi do toga da SQL Server generiše plan upita koristeći jednostavnu pretpostavku obuzdavanja umesto podrazumevane pretpostavke osnovnog suzbijanja za spojove, u okviru optimizatora upita Model procene kardinalnosti SQL Server 2014 (12.x) ili novije. |
|
ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES |
TF 4137 |
Dovodi do toga da SQL Server generiše plan koristeći minimalnu selectivity prilikom procene i predikata za filtere kako bi se uobrazila korelacija. Ovo ime saveta je paralelno sa trace flag 4137 kada se koristi sa modelom procene kardinalnosti SQL Server 2012 (11.x) i ranijih verzija, a ima sličan efekat kada se koristi trace flag 9471 sa modelom procene kardinalnosti SQL Server 2014 (12.x) ili noviji. |
|
DISABLE_BATCH_MODE_ADAPTIVE_JOINS |
Onemogućava prilagodljive spojove grupnog režima. |
pokretanje u SQL Server 2017 |
|
DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK |
Onemogućava povratne informacije o dodeli memorije u grupnom režimu. |
pokretanje u SQL Server 2017 |
|
DISABLE_DEFERRED_COMPILATION_TV |
Onemogućava odloženo kompilaciju promenljive tabele. |
pokretanje u SQL Server 2019 |
|
DISABLE_INTERLEAVED_EXECUTION_TVF |
Onemogućava međuspremno izvršavanje za funkcije vredne više izvoda tabele. |
pokretanje u SQL Server 2017 |
|
DISABLE_OPTIMIZED_NESTED_LOOP |
TF 2340 |
Nalaže procesoru upita da ne koristi operaciju sortiranja (grupno sortiranje) za optimizovanu ugnežđenu petlju koja se spaja prilikom generisanja plana upita. |
|
DISABLE_OPTIMIZER_ROWGOAL |
TF 4138 |
Dovodi do toga da SQL Server generiše plan koji ne koristi izmene ciljeva reda sa upitima koji sadrže ove ključne reči:
|
|
DISABLE_PARAMETER_SNIFFING |
TF 4136 |
Nalaže optimizatoru upita da koristi prosečnu raspodelu podataka tokom sastavljanja upita sa jednim ili više parametara. Ovo uputstvo čini plan upita nezavisnim u pogledu vrednosti parametra koja je prvi put korišćena prilikom sastavljanja upita. Koristite ovaj podsetnik da biste zamenili postavku konfiguracije opsega baze podataka PARAMETER_SNIFFING=OFF. |
|
DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK |
Onemogućava memoriju režima reda da daje povratne informacije. |
pokretanje u SQL Server 2019 |
|
DISABLE_TSQL_SCALAR_UDF_INLINING |
Onemogućava skalarno UDF ulivanje. |
pokretanje u SQL Server 2019 |
|
DISALLOW_BATCH_MODE |
Onemogućava izvršavanje grupnog režima. |
pokretanje u SQL Server 2019 |
|
ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS |
TF 4139 |
Omogućava automatski generisanu brzu statistiku (histogramski amandman) za bilo koju vodeću indeksnu kolonu za koju je potrebna procena kardinalnosti. Histogram koji se koristi za procenu kardinalnosti biće korigovan u vremenu sastavljača upita tako da čini stvarnu maksimalnu ili minimalnu vrednost ove kolone. |
|
ENABLE_QUERY_OPTIMIZER_HOTFIXES |
TF 4199 |
Omogućava hitne ispravke optimizatora upita (promene objavljene u sql Server kumulativnim ispravkama i servisnim paketima). Koristite ovaj podsetnik za premošćavanje Postavka konfigurisanja opsega baze podataka QUERY_OPTIMIZER_HOTFIXES=ON. |
|
FORCE_DEFAULT_CARDINALITY_ESTIMATION |
TF 9481 |
Primorava optimizator upita da ga koristi Model procene kardinalnosti koji odgovara trenutnom nivou kompatibilnosti baze podataka. Koristite ovaj podsetnik za premošćavanje Postavka konfigurisanja opsega baze podataka LEGACY_CARDINALITY_ESTIMATION=ON. |
|
FORCE_LEGACY_CARDINALITY_ESTIMATION |
TF 9481 |
Prisiljava optimizator upita da ga koristi Model procene kardinalnosti SQL Server 2012 (11.x) i ranijih verzija. Koristite ovaj podsetnik da biste zamenili postavku konfiguracije opsega baze podataka LEGACY_CARDINALITY_ESTIMATION=ON. |
|
QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n |
Prisiljava ponašanje optimizatora upita na nivou upita. Ovo ponašanje se dešava kao da je upit preveden sa nivoom kompatibilnosti baze podataka n, gde je n podržan nivo kompatibilnosti baze podataka. Upućivanje nasys.dm_exec_valid_use_hints listu trenutno podržanih vrednosti za n. |
pokretanje u SQL Server 2017 (14.x) CU10 |
Više informacija potražite u članku Saveti (Transact-SQL) - Upit.
Više informacija
Ova ispravka je uključena u servisni paket 1 za SQL Server 2016.
Svaka nova verzija za SQL Server 2016 sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodnu verziju. Preporučujemo da instalirate najnoviju verziju za SQL Server 2016.
Scenariji u kojima ponašanje SQL Server optimizatora upita (QO) mora biti nagovešteno su prilično česti i tradicionalno se rešavaju korišćenjem nekoliko (dokumentovanih i nedokumentovanih) zastavica za praćenje. Međutim, kada se zastavice za praćenje postave na globalnom nivou, one mogu nepovoljno uticati na druga radna opterećenja. Pored toga, omogućavanje po sesiji nije praktično sa postojećim aplikacijama, a omogućavanje po upitu sa OPTION QUERYTRACEON zahteva članstvo u ulozi sysadmin fiksnog servera. (Iako ovo ponašanje možete da zaobiđete pomoću vodiča za plan ili uskladištene procedure, i dalje su potrebni povišeni akreditivi.) Zastavice za praćenje se koriste za privremeno postavljanje određenih karakteristika servera ili za isključivanje određenog ponašanja, njima je možda teško upravljati i razumeti ih. Više informacija o zastavicama za praćenje potražite u temi "Praćenje zastavica" (Transact-SQL) na Veb lokaciji Microsoft Developer Network (MSDN).
Reference
Saznajte više o terminologiji koju Microsoft koristi za opisivanje softverskih ispravki.