Sažetak
Ovo ažuriranje uvodi novi argument podsjetnika za upit, USE HINT, koji vam omogućuje pokretanje optimizatora upita bez dodatnih vjerodajnica ili bez uloge sysadmin poslužitelja. Sintaksa ovog novog podsjetnika za upit slična je sljedećoj:
<query_hint > ::=
{
USE HINT(N'key' [ [, ]...n ])
}
Ovo ažuriranje uvodi i sljedeće mogućnosti podsjetnika koje se mogu koristiti s argumentom USE HINT.
| Mogućnost | Ekvivalentna oznaka praćenja | Opis | Odnosi se na |
|---|---|---|---|
| ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS | TF 9476 | Uzrokuje da SQL Server generira plan upita pomoću pretpostavke jednostavnog zadržavanja umjesto zadane pretpostavke osnovnog zadržavanja za spojeve, prema modelu procjene kardinalnosti optimizatora upita za SQL Server 2014 (12.x) ili noviji. | |
| ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES | TF 4137 | Uzrokuje da SQL Server generira plan pomoću minimalne selektivnosti prilikom procjene predikata AND za filtre radi uzimanja u obzir korelacije. Taj je naziv podsjetnika paralelan sa zastavicom praćenja 4137 kada se koristi s modelom procjene kardinalnosti sustava SQL Server 2012 (11.x) i starijim verzijama, a ima sličan učinak kada se prati zastavica 9471 koristi s modelom procjene kardinalnosti sustava SQL Server 2014 (12.x) ili novijim. | |
| DISABLE_BATCH_MODE_ADAPTIVE_JOINS | Onemogućuje skupni način rada s adaptivnim pridruživanjima. | počevši od SQL Server 2017 | |
| DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK | Onemogućuje skupni način rada s povratnim informacijama o dodjeljivanju memorije. | počevši od SQL Server 2017 | |
| DISABLE_DEFERRED_COMPILATION_TV | Onemogućuje kompilaciju varijable tablice s odgodom. | počevši od SQL Server 2019 | |
| DISABLE_INTERLEAVED_EXECUTION_TVF | Onemogućuje izvršavanje s preplitanjem za funkcije s više naredbi koje sadrže vrijednost tablice. | počevši od SQL Server 2017 | |
| DISABLE_OPTIMIZED_NESTED_LOOP | TF 2340 | Upućuje procesor upita da prilikom stvaranja plana upita ne koristi operaciju sortiranja (skupno sortiranje) za optimizirana ugniježđena spojeve petlje. | |
| DISABLE_OPTIMIZER_ROWGOAL | TF 4138 | Zbog toga SQL Server generira plan koji ne koristi izmjene ciljeva redaka s upitima koji sadrže sljedeće ključne riječi:
|
|
| DISABLE_PARAMETER_SNIFFING | TF 4136 | Upućuje optimizator upita da prilikom sastavljanja upita s jednim ili više parametara koristi prosječnu distribuciju podataka. Ova uputa čini plan upita neovisnim o vrijednosti parametra koji je prvi put korišten prilikom sastavljanja upita. Pomoću ovog savjeta nadjačajte postavku konfiguracije opsega baze podataka PARAMETER_SNIFFING=ISKLJUČENO. | |
| DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK | Onemogućuje način rada retka povratne informacije o dodjeljivanju memorije. | počevši od SQL Server 2019 | |
| DISABLE_TSQL_SCALAR_UDF_INLINING | Onemogućuje skalarno umetanje UDF-a. | počevši od SQL Server 2019 | |
| DISALLOW_BATCH_MODE | Onemogućuje izvršavanje skupnog načina rada. | počevši od SQL Server 2019 | |
| ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS | TF 4139 | Omogućuje automatski generirane brze statistike (izmjena histograma) za svaki vodeći stupac indeksa za koji je potrebna procjena kardinalnosti. Histogram koji se koristi za procjenu kardinalnosti prilagodit će se u vrijeme sastavljanja upita da bi se uzela u obzir stvarna, maksimalna ili minimalna vrijednost stupca. | |
| ENABLE_QUERY_OPTIMIZER_HOTFIXES | TF 4199 | Omogućuje hitne popravke optimizatora upita (promjene objavljene u kumulativnim ažuriranja i servisnim paketima za SQL Server). Pomoću ovog savjeta nadjačajte postavku konfiguracije opsega baze podataka QUERY_OPTIMIZER_HOTFIXES=UKLJUČENO. | |
| FORCE_DEFAULT_CARDINALITY_ESTIMATION | TF 9481 | Prisiljava optimizator upita da koristi model procjene kardinalnosti koji odgovara trenutnoj razini kompatibilnosti baze podataka. Pomoću ovog savjeta nadjačajte postavku konfiguracije opsega baze podataka LEGACY_CARDINALITY_ESTIMATION=UKLJUČENO. | |
| FORCE_LEGACY_CARDINALITY_ESTIMATION | TF 9481 | Prisiljava optimizator upita da koristi model procjene kardinalnosti sustava SQL Server 2012 (11.x) i starijih verzija. Pomoću ovog savjeta nadjačajte postavku konfiguracije opsega baze podataka LEGACY_CARDINALITY_ESTIMATION=UKLJUČENO. | |
| QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n | Forsira ponašanje optimizatora upita na razini upita. To se ponaša kao da je upit kompiliran s novom razinom kompatibilnosti baze podataka, pri čemu je n podržana razina kompatibilnosti baze podataka. Popis trenutačno podržanih vrijednosti za n potražite u sys.dm_exec_valid_use_hints. | počevši od SQL Server 2017 (14.x) CU10 |
Dodatne informacije potražite u odjeljku Savjeti (Transact-SQL) – upit.
Dodatne informacije
Ovo je ažuriranje obuhvaćeno servisnim paketom Service Pack 1 za SQL Server 2016.
O međuverzijama sustava SQL Server 2016
Svaka nova međuverzija za SQL Server 2016 sadrži sve hitne popravke i sigurnosne popravke koji su obuhvaćeni prethodnom međuverzijom. Preporučujemo da instalirate najnoviju međuverziju za SQL Server 2016.
Scenariji u kojima se ponašanje optimizatora upita (QO) sustava SQL Server mora nagovijestiti prilično su uobičajeni i obično se rješavaju pomoću nekoliko (dokumentiranih i nedokumentiranih) oznaka praćenja. No kada se zastavice praćenja postavljaju globalno, one mogu negativno utjecati na druga radna opterećenja. Osim toga, njihovo omogućivanje po sesiji nije praktično s postojećim aplikacijama, a za njihovo omogućivanje po upitu pomoću funkcije OPTION QUERYTRACEON potrebno je članstvo u ulozi fiksnog poslužitelja sysadmin. (Iako to možete zaobići pomoću vodiča za planiranje ili spremljene procedure, dodatne su vjerodajnice ipak potrebne.)
Zastavice praćenja koriste se za privremeno postavljanje određenih karakteristika poslužitelja ili za isključivanje određenog ponašanja. Možda će njima biti teško upravljati i razumjeti ih.
Dodatne informacije o zastavicama praćenja potražite u temi Praćenje zastavica (Transact-SQL) na web-mjestu mreže MSDN (Microsoft Developer Network).
Reference
Saznajte više o terminologiji koju Microsoft upotrebljava za opisivanje softverskih ažuriranja.