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
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.
• La tendance « In-Memory »• Moteur(s) xVelocity• BI• OLTP• Conclusion• Questions
Sommaire
LA TENDANCE « IN MEMORY »
Tendances - ProcesseursMoore’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
• 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
MOTEUR(S) XVELOCITY
• BI: xVelocity in-memory analytics engine – PowerPivot (Excel 2010 et >)– Excel 2013– Analysis Services 2012 – Modèle tabulaire
• SQL DataWarehousing: xVelocity memory optimized ColumnStore index– ColumnStore Indexes
• SQL: xVelocity main memory optimized OLTP– Projet Hekaton
Moteurs Xvelocity pour la BI et l’OLTP
• Algorithmes de compression (x10-x100)– Dictionnaire des valeurs distinctes des colonnes
référencées dans un indexe Bitmap– Autres
Compression
XVELOCITY EN BI
• 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
• Version In-Memory d’Analysis Services• Possibilité Import de fichiers
PowerPivot• BI Entreprise– Sécurité– Partitions
Analysis Services 2012 - Tabular
xVELOCITY CLUSTERED COLUMNSTORE
• 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
Space Used in GB101 million row table (Table + index space)
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)DeletedBitmap
Row Store (RS)
Partition
CommandesCREATE TABLE <table> ( … )CREATE CLUSTERED COLUMNSTORE INDEX <name> on <table>
Conversion de la table en Clustered Columnstores IndexAttention à 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 lignesSi le dernier groupe n’est pas plein il restera dans le Row Store
INSERT/UPDATEStocke 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
• 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
xVELOCITY DANS SQL (projet Hekaton)
• 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
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-upEfficient, business-
logic processingC
ust
om
er
Ben
efi
tsH
eka
ton
Arc
hie
ctu
reD
rivers
Hekaton Architecture
Memory-optimized Table Filegroup Data Filegroup
SQL Server.exeMemory_optimized Tables & Indexes
TDS Handler and Session Management
Natively Compiled SPs and Schema
Buffer Pool for Tables & Indexes
Proc/Plan cache for ad-hoc T-SQL and SPs
Client App
Transaction Log
Query InterOp
Non-durable Table
T1 T4T3T2
T1 T4T3T2
T1 T4T3T2
T1 T4T3T2
Tables
Indexes
Interpreter for TSQL, query plans, expressions
T1 T4T3T2
T1 T4T3T2
Checkpoint & Recovery
Access Methods
Parser, Catalog,
Algebrizer, Optimizer
Hekaton Compiler
Hekaton Component
Key
Existing SQL Component
Generated .dll
Hash Indexes
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, Catalog,
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
Main-memory optimized indexes
Mic
roso
ft C
on
fid
en
tial
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
BP
Hash index on Name
JS
• 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
Hekaton Resultats en single-core
Engine Factor Faster
Trans / sec SPs/sec CPI Instructions
/ TranX 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
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
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:\MOUNTHEAD\DATA\CONTOSOOLTP_FS_DIR') to FILEGROUP [ContosoOLTP_hk_fs_fg];
• TableCREATE 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 procedureCREATE 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
Poursuivons la conversationSupport Premier à votre écoute!
Nom du speakerFonction du speakerSociété du speaker
Stands F-G-H au Village Microsoft
Microsoft met à l’honneur vos plus belles réalisations avec SQL Server sur son site ! Pour candidater, rendez-vous sur le stand Server & Cloud
Un lien pour tout savoir sur SQL Server 2012 : www.microsoft.fr/SQL
QUESTIONS
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.com
http://aka.ms/generation-app
http://aka.ms/evenements-developpeurs
http://aka.ms/itcamps-france
Les accélérateursWindows Azure, Windows Phone,
Windows 8
http://aka.ms/telechargements
La Dev’Team sur MSDNhttp://aka.ms/devteam
L’IT Team sur TechNethttp://aka.ms/itteam