Presupposto di contenimento di join nel nuovo stimatore cardinalità riduce le prestazioni delle query in SQL Server 2014 e versioni successive

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 3189675
Sintomi
Si consideri lo scenario seguente:

  • Si sta utilizzando Microsoft SQL Server 2014 o versione successiva.
  • Si esegue una query che contiene i join e join non filtrare i predicati.
  • Compilare la query utilizzando il nuovo Cardinalità Estimator (Nuovo CE).
In questo caso si verifichi un degrado delle prestazioni delle query.

Questo problema non si verifica se si compila la query utilizzando la marcatura CE Legacy.
Risoluzione
In SQL Server 2014 e versioni successive, è possibile utilizzare trace flag 9476 per imporre la marcatura CE di nuovo a utilizzare ilContenimento di un semplice presupposto anziché il valore predefinito Contenimento di basepresupposto". (Vedere la "Ulteriori informazioni"sezione).

Attivazione di questo flag di traccia possono migliorare scelta piano di query senza dover ripristinare completamente il modello Legacy CE se sono vere le seguenti condizioni:

  • Si verifica una scelta di piano di query non ottimale che causa una riduzione delle prestazioni complessive per le query che includono join e join non filtrare i predicati.
  • È possibile verificare un significativo termometro una stima "partecipa cardinalità" (vale a dire l'effettiva rispetto al numero stimato di righe che differiscono in modo significativo).
  • L'imprecisione non esiste quando si compilano le query utilizzando la marcatura CE Legacy.

È possibile abilitare questo flag di traccia a livello globale, a livello di sessione, o a livello di query.

Nota Utilizzando i flag di traccia in modo non corretto può ridurre le prestazioni del carico di lavoro. Per ulteriori informazioni, vedere la sezione "Introduzione" del seguente articolo della Microsoft Knowledge Base:

2801413 Consentono di influire sul piano di SQL Server query optimizer comportamento che può essere controllato tramite il flag di traccia diverso a livello di query specifica

Informazioni
In SQL Server 2014, nuovo stimatore cardinalità è stata introdotta per livello di compatibilità del database maggiore e 120. La marcatura CE di nuovo Modifica presupposti diversi da CE legacy nel modello utilizzato da Query Optimizer quando la cardinalità di stime per diversi operatori e predicati.

Una di queste modifiche è correlata a partecipare presupposto di contenimento.

Il modello Legacy CE presume che gli utenti cercano sempre i dati esistenti. Ciò significa che, per un predicato di join che implica un'operazione equijoin per due tabelle, le colonne unite è presente su entrambi i lati del join. In presenza di predicati ulteriore join non filtro in base alla tabella di join, la marcatura CE Legacy presuppone un certo livello di correlazione per i predicati di join e i predicati del filtro non di join. Questo implicava correlazione è chiamata contenimento semplice.

In alternativa, la nuova CE utilizza contenimento di Base come la correlazione. Il modello nuovo CE presume che gli utenti potrebbero eseguire query per i dati che non esistono. Ciò significa che i predicati del filtro in tabelle separate possono correlare tra loro. Quindi, utilizziamo un approccio probabilistico.

Per molti scenari pratici, nell'ipotesi di contenimento di Base crea stime migliori. Questa operazione, a sua volta, crea la query più efficiente il piano. Tuttavia, in alcuni casi, nell'ipotesi di contenimento di un semplice può fornire risultati migliori. In questo caso, possono verificarsi scelta piano di query meno efficiente quando si utilizza la nuova CE invece CE Legacy.

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 3189675 - Ultima revisione: 09/08/2016 20:17:00 - Revisione: 1.0

Microsoft SQL Server 2016 Enterprise, Microsoft SQL Server 2016 Developer, Microsoft SQL Server 2016 Web, Microsoft SQL Server 2016 Standard, Microsoft SQL Server 2016 Express, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Express

  • kbmt KB3189675 KbMtit
Feedback