La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

30
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

description

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

Transcript of La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

Page 1: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

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

Page 2: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

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.

Page 3: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

• La tendance « In-Memory »• Moteur(s) xVelocity• BI• OLTP• Conclusion• Questions

Sommaire

Page 4: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

LA TENDANCE « IN MEMORY »

Page 5: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

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

Page 6: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

• 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

Page 7: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

MOTEUR(S) XVELOCITY

Page 8: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

• 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

Page 9: La puissance du in-memory dans SQL Server : Le moteur 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

Page 10: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

XVELOCITY EN BI

Page 11: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

• 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

Page 12: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

• Version In-Memory d’Analysis Services• Possibilité Import de fichiers

PowerPivot• BI Entreprise– Sécurité– Partitions

Analysis Services 2012 - Tabular

Page 13: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

xVELOCITY CLUSTERED COLUMNSTORE

Page 14: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

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

Page 15: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

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

Page 16: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

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

Page 17: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

• 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

Page 18: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

xVELOCITY DANS SQL (projet Hekaton)

Page 19: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

• 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

Page 20: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

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

Page 21: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

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

Page 22: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

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

Page 23: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

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

Page 24: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

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

Page 25: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

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

Page 26: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

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

Page 27: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

Poursuivons la conversationSupport Premier à votre écoute!

Nom du speakerFonction du speakerSociété du speaker

Stands F-G-H au Village Microsoft

Page 28: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

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

Page 29: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

QUESTIONS

Page 30: La puissance du in-memory dans SQL Server : Le moteur xVelocity pour la BI et l'OLTP

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