sql server 2014 - il nuovo cardinality estimator
TRANSCRIPT
•Independent SQL Server consultant
•Works with SQL Server since version 7
•MCTS, MCITP, MCT
•DBA @ Formula 1 team
Blog: spaghettidba.com
Twitter: @spaghettidba
Gianluca Sartori
SQL Server 2014 include un nuovo Cardinality Estimator
I piani di esecuzione saranno compilati usando il nuovoCE
Nuovi algoritmi di calcolo dalla cardinalità
Cardinality Estimator
Componente centrale del Query Processor
Ha il compito di stimare la cardinalità degli insiemi di righe che soddisfano uno o più predicati
Le stime di cardinalità sono utilizzate dall’optimizer per produrre i piani di esecuzione
Le stime si basano sulle statistiche
Cos’è il Cardinality Estimator?
Il vecchio CE è stato scritto per SQL Server 7Codice vecchio di 15 anni!
Molte nuove feature
Molte modifiche
Complessità elevata
Difficile da manutenere
Conveniente una riscrittura completa
Perché un nuovo CardinalityEstimator?
Per attivare il nuovo CE:ALTER DATABASE AdventureWorks2012 SET COMPATIBILITY_LEVEL = 120;
--oppure
DBCC TRACEON(2312);
Per disattivare il nuovo CE:ALTER DATABASE AdventureWorks2012 SET COMPATIBILITY_LEVEL = 110;
--oppure
DBCC TRACEON(9481);
Come si attiva il nuovo CE?
Molti algoritmi sono cambiatiCodice complessoPossibilità di regressione
Nuovi bugCorrezione di bug che nascondono altri bug
Compatibility 110 consente di mantenere ilcomportamento precedente
Perché disattivare il nuovo CE?
Interroga le statistiche per stimare il numero di righeDBCC SHOW_STATISTICS (
'Sales.SalesOrderHeader',
'OrderDate')
WITH HISTOGRAM;
Come funziona il CE?
Colonne ascendenti manca un valore nell’istogrammaper le righe appena inserite
TF 2389 e 2390 forzano l’interrogazione del valoreMassimo
Con il nuovo CE non è più necessario usare i TF
Sono già attivi di default
Colonne Ascendenti