I piani di query modificano le prestazioni peggiori in SQL Server 2014


10

Di recente abbiamo aggiornato il nostro server da SQL Server 2008R2 a SQL Server 2014. Abbiamo una query che ha funzionato bene nel 2008R2 ma ora nel 2014 funziona incredibilmente molto più lentamente e ha un piano di esecuzione errato.

Ho fatto diversi test ...

  1. Riporta il DB 2014 alla modalità di compatibilità 2008/2012.
  2. Testare la query utilizzando Impaginazione.

Entrambi hanno comportato l'esecuzione della stessa query e la velocità di SQL Server 2008R2.

Perché il piano è così male e la query viene eseguita così a lungo in SQL Server 2014?

Stima / Actual

Questa immagine mostra 2 query, una che utilizza il rownumber nel modo in cui è stata eseguita in 2008R2 e quindi la seconda è la correzione con l'impaginazione. Entrambi hanno funzionato nel 2014, entrambi molto diversi, ma nel 2008 abbiamo visto le stesse prestazioni come se avessimo usato l'impaginazione nel 2014.

Risposte:


7

Questo non è un problema, è di progettazione ed è considerato un miglioramento delle prestazioni.

Se le query non vengono eseguite come previsto, sarà necessario risolverle nel codice del database / dell'applicazione.

È possibile forzare il vecchio stimatore della carnalità utilizzando il flag di traccia 9481 a livello di server, sessione o query (utilizzando OPTION (QUERYTRACEON 9481)). Ciò lo forzerà indipendentemente dal livello di compatibilità del database.

Ci sono anche molte informazioni che il team CSS ha pubblicato qui .

Un post più dettagliato su Cardanility Estimator e le modifiche a tale processo in SQL Server 2014, include un esempio.


Sembra una scusa pessima per qualcosa che è andato storto
dvdmn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.