"Delayed Durability", una vera e propria killer feature che però ha finora trovato poco spazio sui vari media e social network, e che quindi è bene scoprire.
3. Davide Mauri
18 Years of experience on the SQL Server Platform
Specialized in Data Solution Architecture, Database
Design, Performance Tuning, Business Intelligence
Projects, Consulting, Mentoring & Training
Regular Speaker @ SQL Server events
Microsoft SQL Server MVP
President of UGISS (Italian SQL Server UG)
Mentor @ SolidQ
4. Delayed Durability
E’ una delle più importanti novità di SQL Server 2014
Ottimale per tabelle «di appoggio»
Quindi in particolare per le fasi ETL di una soluzione di
BI
Non fa «notizia» ma è una killer feature!
5. Delayed Durability
«D» nell’ancronimo ACID
Atomicity
(atomicità)
Consistency
(consistenza)
Isolation
(isolamento)
Durability
(persistenza)
Proprietà di una Transazione, per assicurare la correttezza
logica e fisica della stessa
http://en.wikipedia.org/wiki/ACID
6. Delayed Durability
La persistenza viene ottenuta attraverso l’uso del
Transaction Log
Le transazione seguono il pattern Write-Ahead Logging
(WAL)
Ossia, prima le transazioni vengono scritte nel t-log
E solo successivamente vengono scritte nei data file
7. Delayed Durability
Il WAL è una garanzia ed una sicurezza.
Ma anche un evidente collo di bottiglia, dato che tutto
deve passare da li
Anche il log sta in memoria, ma al commit deve essere
scritto su disco, prima di poter terminare la transazione.
Si parla quindi di «synchronous commit»
8. Delayed Durability
Con SQL Server 2014 il WAL può essere bypassato!
«Asynchronous Commit»
La transazione può essere terminata senza avere la
conferma che il buffer log sia stato scritto sul disco
Notevole incremento del throughput!
Attenzione che si possono perdere i dati!
E mai più recuperarli…..
9. Delayed Durability
L’opzione per bypassare il WAL è la seguente:
La Delayed Transaction Durability (DTD) è utilizzabile sia
con Hekaton che con tabelle/transazioni «classiche»
10. Delayed Durability
Se l’opzione è «FORCED» la DTD viene attivata su tutto il
database
Quindi molta attenzione…
Se l’opzione è «ALLOWED» è possibile attivare la DTD
transazione per transazione
Grandissima granularità nell’applicazione della DTD!
Il TEMPDB è sempre stato in DTD (sin dalla versione 2000)
13. Delayed Durability
In conclusione…
Utilizzare DTD dove serve per migliorare notevolmente le
performance di scrittura
Ricordate comunque che le operazione BULK sono sempre
le più veloci
Attenzione ad usarlo con cautela per evitare di perdere dati
non «committati»!