sql server 2014 - il nuovo cardinality estimator

16
SQL Server 2014 Cardinality Estimator Gianluca Sartori [email protected]

Upload: gianluca-sartori

Post on 14-Jul-2015

321 views

Category:

Technology


3 download

TRANSCRIPT

SQL Server 2014Cardinality Estimator

Gianluca Sartori

[email protected]

PILLS SPONSORS

•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?

SELECT *FROM Sales.SalesOrderHeaderWHERE OrderDate = '2007-01-01'

Come funziona il CE?

Predicati multipli

Exponential Backoff

Cardinality Estimator

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

Nelle prossime puntate…

Extending the Buffer Pool with Solid-State Drives

Cardinality Estimator

Grazie!Trovi altri video su:

www.ugiss.org/sql-server-2014-

pills