Tour d'horizon de ce que SQL Server propose et proposera prochainement en termes de traitement in-memory. Découvrez la puissance, les bénéfices et les secrets du moteur xVelocity utilisé : - pour la BI: Analysis Services 2012, PowerPivot - dans le moteur SQL Server : update du ColumnStore Index, Projet Hekaton pour l'OLTP in-memory
Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...
La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP
1. Donnez votre avis !
Depuis votre smartphone, sur :
http://notes.mstechdays.fr
De nombreux lots à gagner toutes les heures !!!
Claviers, souris et jeux Microsoft…
Merci de nous aider à améliorer les TechDays
http://notes.mstechdays.fr
2. La puissance du In-
Memory dans SQL Server :
Le moteur xVelocity pour la
BI et l'OLTP
Nadia Ben El Kadi
Microsoft
Code / Développement
Frédéric PICHAUT
Microsoft
Avec la collaboration d’Aurélien Koppel qui n’a pas pu assurer la
présentation.
3. • La tendance « In-Memory »
• Moteur(s) xVelocity
• BI
• OLTP
• Conclusion
• Questions
Sommaire
5. Tendances - Processeurs
Moore’s Law: more
transistors and cores
Clock speeds not
increasing…
Perf/Clock (ILP) not
increasing
… due to power/heat limits
Chart reference
http://www.gotw.ca/publications/concurrency-ddj.htm
6. • La plupart des systèmes OLTP ont une taille de base< 1TB
• L’ensemble de travail est généralement plus petit
• Lorsque les bases actuelles ont été crées:
• La mémoire était chère
• La taille des données était > à la taille mémoire disponible
• Nécessitait des mécanismes complexes de pagination pour
persister les données.
• Nos clients demandent de faibles temps de latence à grande échelle.
Tendances – Charges OLTP
11. • Add- in Excel gratuit
• Analyse de volumes importants de données
– Permet de dépasser la limite de 1 Millions de lignes d’une feuille Excel traditionnelle
• Multi sources:
– Excel, CSV, ODBC, SSAS, Flux…
• Excel 2010
– Add-in gratuit téléchargeable
• Excel 2013
– Add-in inclus par défaut
PowerPivot & Excel 2013
12. • Version In-Memory d’Analysis Services
• Possibilité Import de fichiers PowerPivot
• BI Entreprise
– Sécurité
– Partitions
Analysis Services 2012 - Tabular
14. • Exécution rapide pour le requêtes DW
– Environ 10x voir plus
• Réduction de l’espace
• Possibilité Insert, Update, Deleted
• Plus besoin d’autres indexes
• Plus de type de données supporté
– Supprime des limitations des non-clustered
columnstores de SQL 2012
Advantages des Clustered Columnstores
0.0
5.0
10.0
15.0
20.0
Table with
customary
indexing
Table with
customary
indexing
(page
compression)
Table with no
indexing
Table with no
indexing
(page
compression)
Table with
columnstore
index
Clustered
columnstore
Space Used in GB
101 million row table (Table + index space)
15. Structure d’une Partition CCSI
• CREATE CLUSTERED COLUMNSTORE
Organise et compresse le CS
• BULK INSERT: Crée de nouveaux CS
groupes
• INSERT: Les enregistrements sont placé
dans le RS (heap)
– Quand le RS est plein un nouveau CS groupe est
créé
• DELETE: Les enregistrements sont
marqués dans le Deleted Bitmap
• UPDATE: Delete plus Insert
Pas prévu pour les applications OLTP,
mais idéal pour les DW avec
principalement de la lecture!
Column Store (CS)
Deleted
Bitmap
Row Store (RS)
Partition
16. Commandes
CREATE TABLE <table> ( … )
CREATE CLUSTERED COLUMNSTORE INDEX <name> on <table>
Conversion de la table en Clustered Columnstores Index
Attention à la mémoire et au parallélisme (MAXDOP 1)
BULK INSERT, SELECT INTO <name> on <table>
Crée des groupes d’enregistrements de 1M de lignes
Si le dernier groupe n’est pas plein il restera dans le Row Store
INSERT/UPDATE
Stocke les lignes dans le Row Store
Tuple Mover
• Quand le RS contiens 1M de lignes, elles sont transférées dans un nouveau CS Row Group
• Par default toutes les 5 minutes
• Manuellement: ALTER INDEX <name> ON <table> REORGANIZE
Le partitionnement des Clustered Columnstores Indexes marche comme sur les autres tables
17. • SQL Server 2012
– Plusieurs limitations du moteur font que des
jointure ne s’excecute pas en Batch mais en
Row mode
• vNext
– Support de tous les types de JOIN
• OUTER JOIN
• Semi-join: IN, NOT IN
– UNION ALL
– Scalar aggregates
– Mixed mode plans,…
– Tous les types de données
• Sauf CLR, (n)varchar(max), varbinary(max)
BATCH MODE
19. • Un ajout au moteur SQL pour l’OLTP, optimisé pour une gestion en mémoire
– Support des propriétés ACID
– Le but de la V1 est spécifiquement orienté vers l’OLTP
• Complètement intégré au moteur SQL Server
– Un avantage sur nos compétiteurs
– Une approche Hybride entre le In-memory et le traditionnel
• Obtenir de la performance en éliminant le plus possible d’instruction
– Des indexes optimisés en mémoire
• Dissocié de la structure disque. Pas de B+tree, ni de buffer pool
– Plus de mécanisme de locks & latches
• Gestion de concurrence optimiste,
– L’optimisation faite lors de la compilation
• T-SQL compilé en code natif C
• Target:
– 2-5X d’amélioration en scalability
– Jusqu’a10X i d’amélioration en performance certains workloads.
Hekaton en bref
20. Hekaton Architecture Principles
20
SQL Server Integration
• Same manageability,
administration &
development experience
• Integrated queries &
transactions
• Integrated HA and
backup/restore
Main-Memory
Optimized
• Optimized for in-memory
data with full ACID
• No buffer pool, B-trees or
pages
• Indexes (Hash e.g.) exist
only in memory
• Stream-based storage
High Concurrency
• Multi-version optimistic
concurrency control
• Core engine uses lock-free
algorithms
• No lock manager, latches or
spinlocks
T-SQL Compiled to
Machine Code
• T-SQL compiled to machine
code via C code generator
and VC
• Invoking a procedure is just
a DLL entry-point
• Aggressive optimizations @
compile-time
Steadily declining memory
price, NVRAM
Many-core processorsStalling CPU clock rate TCO
Hardware trends Business
Hybrid engine and
integrated experience
High performance data
operations
Frictionless scale-up
Efficient, business-logic
processing
Customer
Benefits
HekatonArchiectureDrivers
22. Hekaton Architecture
SQL Server.exe
Buffer Pool for Tables & Indexes
Hekaton Engine :
Hash Indexes, Tables, Transactions, Multi-
versioning, Checkpoint/Recovery, …
Hkengine.dll=700 KB
TDS Handler and Session Management
Natively Compiled SPs
& Schema
Proc/Plan cache for ad-hoc T-SQL and
SPs
Client App
Query
Interop
Interpreter for TSQL, query
plans, expressions
Access Methods , LOBs, Lock Mgr, &
Storage
Parser, Catalo
g, Algebrizer,
Optimizer
Hekaton Compiler
& VC compiler
Transaction ManagerSecurity
Database Mgmt and Log
Hekaton
Component
Integration
changes
Backup/Restore/HADRON
Key
Existing SQL
Component
Checkpoint & Recovery
Generated .dll
sqlmin.dll=39 MB
SOS
Filestream Filegroup
Memory Optimized Table
Filegroup
Data Filegroup
No Hekaton Changes
Transaction Log
Additional Hekaton Log
records
23. Main-memory optimized indexes
MicrosoftConfidential
23
90,150 Susan Bogota
50, ∞ Jane Prague
100, 200 John Paris
70, 90 Susan Brussels
200, ∞ John Beijing
Timestamps NameChain ptrs City
Hash index on
City
B
P
Hash index on
Name
J
S
• Row can be part of multiple indexes, but there is only a single copy
• Each row version has a valid time range indicated by two timestamps
• A version is visible if transaction read time falls within the version’s valid time
• Garbage collection of versions: incremental, parallel, non-blocking, cooperative
Row format
24. Hekaton Resultats en single-core
Engine
Factor
Faster
Trans /
sec
SPs/sec CPI
Instructions
/ Tran
X Fewer
Instructions
SQL Server 1,420 6,970 2.4 973,000
SQL Server
Hekaton
48 67,800 334,000 1.6 30,300 32
• Test: Rejouer une trace des 3 plus fréquents updates du TPC-E
• Pas de communication client/server
• Pas d’I/O moteur sauf pour le transaction log
• Toutes les données en mémoire pour les deux tests
• Checkpoints off
25. Operation Factor faster (slower) than
regular SQL
Comments
Interop Native
Select count(*)1 (2.5) =
No clustered index scan in
Hekaton
Hash Join1 (1.3) N/A Uses index scan
Nested-loop Join1 4.0 N/A Probes into hash index
Single-row selects1 1.3 40 SP doing selects in loop
Single-row selects1 1.2 17
Native compiled SP calls SQL’s
rand()
Single-row updates1 N/A 10 SP doing update in loop
Bwin Session State 6 Version M4 Expectation for
OLTP workloads
Advantage of
pushing work to
SPs
Interop targets app
migration, not perf
(1) Table de 1 million d’enregistrements accédée en une requête ou SP
Hekaton Performances
26. Migration vers Hekaton
• Storage
ALTER DATABASE ContosoOLTP ADD FILEGROUP [ContosoOLTP_hk_fs_fg] CONTAINS MEMORY_OPTIMIZED_DATA;
ALTER DATABASE ContosoOLTP
ADD FILE (NAME = [ContosoOLTP_fs_dir],
FILENAME = 'H:MOUNTHEADDATACONTOSOOLTP_FS_DIR') to FILEGROUP [ContosoOLTP_hk_fs_fg];
• Table
CREATE TABLE Customers (
CustomerID nchar (5) NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT=100000),
CompanyName nvarchar (40) NOT NULL INDEX IX_CompanyName HASH(CompanyName) WITH (BUCKET_COUNT=65536),
ContactName nvarchar (30) NOT NULL ,
ContactTitle nvarchar (30) NOT NULL ,
Address nvarchar (60) NOT NULL ,
City nvarchar (15) NOT NULL INDEX IX_City HASH(City) WITH (BUCKET_COUNT=1024),
Region nvarchar (15) NOT NULL INDEX IX_Region HASH(Region) WITH (BUCKET_COUNT=1024),
PostalCode nvarchar (10) NOT NULL INDEX IX_PostalCode HASH(PostalCode) WITH (BUCKET_COUNT=100000),
Country nvarchar (15) NOT NULL ,
Phone nvarchar (24) NOT NULL ,
Fax nvarchar (24) NOT NULL
) WITH (MEMORY_OPTIMIZED=ON)
• Native procedure
CREATE PROC InsertCustomers (@CustomerID nchar(5),@CompanyName nvarchar(40),
@ContactName nvarchar(30),@ContactTitle nvarchar(30), @Address nvarchar(60),
@City nvarchar(15),@Region nvarchar(15),@PostalCode nvarchar(10),
@Country nvarchar(15),@Phone nvarchar(24),@Fax nvarchar(24))
WITH NATIVE_COMPILATION, SCHEMABINDING, execute as owner as
BEGIN ATOMIC WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, language = 'english')
INSERT INTO [dbo].[Customers] VALUES(@CustomerID,@CompanyName,@ContactName,@ContactTitle,@Address,
@City,@Region,@PostalCode,@Country,@Phone,@Fax);
END
27. Poursuivons la conversation
Support Premier à votre écoute!
Nom du speaker
Fonction du speaker
Société du speaker
Stands F-G-H au Village Microsoft
30. Formez-vous en ligne
Retrouvez nos évènements
Faites-vous accompagner
gratuitement
Essayer gratuitement nos
solutions IT
Retrouver nos experts
Microsoft
Pros de l’ITDéveloppeurs
www.microsoftvirtualacademy.comhttp://aka.ms/generation-app
http://aka.ms/evenements-
developpeurs
http://aka.ms/itcamps-france
Les accélérateurs
Windows Azure, Windows Phone,
Windows 8
http://aka.ms/telechargements
La Dev’Team sur MSDN
http://aka.ms/devteam
L’IT Team sur TechNet
http://aka.ms/itteam
Editor's Notes
Notation
Intro code / dev
.
While Hekaton’s memory optimized tables must fully fit into main memory, the database as a whole need not. These in-memory tables can be used in queries just as any regular table, however providing optimized and contention-free data operation at this stage. After migrating to optimized in-memory storage, stored procedures operating on these tables can be transformed into natively compiled stored procedures, dramatically increasing the processing speed of in-database logic. Recompiling these stored procedures is, again, done through T-SQL, as shown below: