3. Francesco Milano
SQL Server
5+ anni di esperienza
SQL Server 2005, 2008, 2008R2, 2012
Progettazione, sviluppo, integrazione, ottimizzazione
Data Platform Specialist @ SolidQ
.NET
10+ anni di esperienza
Focus primario su soluzioni Web e Back-End
Membro UGISS
Speaker, blogger
4. What’s before
Hekaton – In Memory Tables
http://vimeo.com/83218500
Hekaton – Indici & MVCC
http://vimeo.com/85591054
5. Hekaton – Natively Compiled Stored
Procedures
Le performance di Hekaton derivano da quattro componenti
fondamentali
1. Nuova struttura di dati in memoria – In Memory Tables
2. Nuovi indici ottimizzati per lavorare in memoria – Hash, Range
3. Nuovo meccanismo di concorrenza lock-free – MVCC
4. Abbandono di codice interpretato – Stored Procedures Native
- Perché compilare il codice delle SP in C?
- Perché è più veloce!!
6. Hekaton – Natively Compiled Stored
Procedures
La ripartizione dei costi di una chiamata a SP
classica viene stravolta (in positivo ) dal nuovo
approccio
In fase di creazione di una SP nativa i piani di
esecuzione, i metodi di accesso e le espressioni
vengono convertiti in codice C
Il codice ottenuto viene passato ad un compilatore
e ad un linker, i quali generano una dll
La dll viene quindi caricata in memoria
A seguito di un riavvio dell’istanza, la dll verrà
ricompilata e caricata in memoria al primo
utilizzo
7. Hekaton – Natively Compiled Stored
Procedures
L’output di compilatore e linker viene salvato su disco in
sottocartelle divise per database_id
9. Hekaton – Natively Compiled Stored
Procedures
Ottimizzate per carico di lavoro di tipo OLTP
Transazioni molto brevi
Operazioni su un piccolo numero di righe per volta
Esempio
Inserimento di un ordine e dei suoi dettagli
Aggiornamento dello stato di un ordine
Modifica dell’anagrafica di un cliente
11. Hekaton – Natively Compiled Stored
Procedures
Limitazioni
No accesso a tabelle classiche (solo In Memory Tables)
No CTE
No subqueries
No Temp Tables (sostituibili da tabelle in memoria create on-thefly)
No cursori
…
http://msdn.microsoft.com/enus/library/dn246937(v=sql.120).aspx