SlideShare une entreprise Scribd logo
1  sur  32
Les journées

SQL Server 2013

Un événement organisé par GUSS

#JSS2013
Les journées

SQL Server 2013

Hekaton

Christophe LAPORTE

Un événement organisé par GUSS

#JSS2013
Christophe LAPORTE
~ depuis 1997

6.5 <= SQL Server <= 2014

christophe_laporte@hotmail.fr
http://conseilit.wordpress.com/

@conseilit

#JSS2013
Merci à nos sponsors

#JSS2013
Agenda
•
•
•
•
•
•
•

Pourquoi ?
Comment ?
Donc …
Du changement ?
Considérations Hardware
Limitations
Migrer ?
#JSS2013
Pourquoi Hekaton ?
• Les disques flash sont plus rapides que les
disques rotatifs mais moins rapide que la RAM
• La quantité de mémoire augmente / le prix
diminue
• La puissance des CPU double tous les 2 ans,
mais la fréquence ne croit plus
• Tous les SGBD sont matures / optimisés
• Il faut trouver de nouvelles voies pour
augmenter les perfs
#JSS2013
Comment ?
• Supprimer des lignes de code
• Les latches

– Mécanismes de protection des ressources partagées comme le buffer pool

• Les locks

– Mécanismes de contrôle de concurrence d'accès
– Poser un verrou nécessite plusieurs latches …

• Les plans d'exécutions
–
–
–
–

Bien que compilés sont interprétés
Compilation = parsing / algébrisation / optimisation
Mais l'interpréteur va parcourir chaque élément de l'arbre du plan d'exécution
Cout d'interprétation
• Données sur disque -> négligeable
• Données en mémoire -> important
#JSS2013
Hekaton …
•
•
•
•
•

Nouveau moteur
Second moteur InMemory après Apollo
Tables & index en mémoire
Compilation native des procédures
Plus de locks ni de latches

#JSS2013
« Les » moteurs SQL Server
T-SQL
Parser
Metadata Management

Catalogs

Query Optimizer

Apollo
(Column
Store)

Relational

Hekaton

Query
Engines
Memory

DB & Log
#JSS2013
Du changement ?
• On ne change rien (ou presque) et ça change tout !
– Un requête peut être exécutée sur les 3 moteurs …
– Le mode Interop permet d'accéder à une table InMemory

• On change tout (ou presque) et ça ne change rien tout
– Réécrite d'une procédure en version compilation native
• Appel inchangé
• Le client ne sait pas ce qu‘il se passe en arrière-plan

• Pleinement Intégré à SQL Server !
–
–
–
–

Installation
Sauvegardes
HA (groupe de disponibilité, fci)
Perfmon, XEvent, DMVs

#JSS2013
Durabilité des transactions 1/3

SCHEMA_AND_DATA

SCHEMA_ONLY

•
•
•
•
•

Transactions durables, pas de perte de données
Commit de transactions « synchrone »
Ecrites dans TLog avant de rentre le contrôle à l’utilisateur
Persisté sur disque juste avant le succès du commit
Option par défaut

• Données volatiles
• Ne résiste pas à une restart
• Encore plus performant que SCHEMA_AND_DATA

#JSS2013
Durabilité des transactions 2/3
•
•
•
•
DELAYED_DURABILITY

Ecriture asynchrone du Tlog
Enregistré dans un buffer qui est ensuite flushé sur disque
Commit n’attends pas les IO du Tlog
Si transactions concurrentes, bufferise et ensuite écrit des gros
blocs
• Tolère des pertes de données
• Convient à des charge de travail élevée
• Peut se gérer niveau
• Database
• Bloc de code
• Commit

#JSS2013
Durabilité des transactions 3/3
COMMIT setting
/
Database setting

DELAYED_DURABILITY =
DISABLED (default)

DELAYED_DURABILITY =
ALLOWED

DELAYED_DURABILITY =
FORCED

DELAYED_DURABILITY = OFF
In-Memory OLTP only
transaction. (OFF)

Transaction is fully durable.

Transaction is fully durable.

Transaction is delayed
durable.

DELAYED_DURABILITY = ON
In-Memory OLTP only
transaction.

Transaction is fully durable.

Transaction is delayed
durable.

Transaction is delayed
durable.

DELAYED_DURABILITY = OFF
Cross database or
distributed transaction.

Transaction is fully durable.

Transaction is fully durable.

Transaction is fully durable.

DELAYED_DURABILITY = ON
Cross database or
distributed transaction.

Transaction is fully durable.

Transaction is fully durable.

Transaction is fully durable

#JSS2013
Démonstration
•

Création d’une base

•

Création d’une table

#JSS2013
Un enregistrement dans Hekaton

#JSS2013
Verrouillage – Concurrence d’accès
• On assume que les conflits sont rares
• 3 techniques combinées

– Verrouillage optimiste
– Transaction se déroule sans verrouillage
– Conflits détectés lors de la phase de validation

• Multi version

– Update engendre un nouvel enregistrement
– Donc pas de locks !

• TimeStamps

– Utilisation du TimeStamp de début de transaction pour obtenir la
bonne version de l’enregistrement

• Démo

#JSS2013
Compilation native
• Procédures stockées

– Pas pour les requêtes Ad-Hoc

– Attention : plan d'exécution déterminé au moment de la compilation
• Les données présentes dans la table doivent être représentatives
• Les statistiques DOIVENT être à jour
– Compilation intervient
• Lors de la création de la SP
• Lorsque la base est mise Online

• Pourquoi ?

– Eviter l’interprétation du plan d’ exécution
– Réduction du nombre d’instructions / transaction
– Gagner en performance

• Comment ?

– Génération de code C
#JSS2013
Démonstration
• Native Compiled Procedure

#JSS2013
Gestion des index
•
•
•
•

Création concomitante à la table
Ne sont présents qu’en mémoire
1 minimum, 8 maximum
2 types d’index
– Hash
• Tableau de pointeurs
• Pointe vers les enregistrements
– Range
• Recherches sur des intervalles
• BUCKET_COUNT difficile à estimer
• BW-Tree

#JSS2013
Hash Index

#JSS2013
Range Index

The Bw-Tree: A B-tree for New Hardware Platforms

http://research.microsoft.com/pubs/178758/bw-tree-icde2013-final.pdf

#JSS2013
Démo

#JSS2013
Hardware – mémoire
• 2 fois la taille des données
• Limitations de mémoire embedded
– 80 % maximum
– Gestion via le resource governor

• Attention à le pas consommer trop au
détriment du buffer pool
• Possibilité de jouer avec le Buffer Pool Extension
– Clean pages sur disque rapide
#JSS2013
Hardware - disque
• 2 à 3 fois espace d'une disk based table

– Insert
• Écriture dans fichier Data (128MB / « Pages » de 256KB)
– Update
• Nouvelle version de l’enregistrement dans fichier Data
– Delete
• Ecriture de la suppression dans fichier Delta
– Checkpoint
• Force la fermeture de fichier Data => augmentation de l’espace
– Merge
• Fusionne des paires de fichiers Data/Delta

• SSD ou fusion IO car très peu de latence
• N'oubliez pas l'espace pour les index !
• Non ! Personne ne suit dans la salle ???

#JSS2013
Limitations (SQL 2014)
• Prévu pour du High Troughput OLTP

– Rows 8060 max :
• Pas de type off row ou LOB (varchar max), sqlvariant
– Pas de types CLR (XML ...)
– Pas de triggers

• Design / Exploitation
–
–
–
–
–

Pas de FK
Pas de check
Pas de identity
Pas de alter table => drop / create table
Pas de create index => drop / create table
#JSS2013
Limitations (SQL 2014) … encore (désolé)
TRUNCATE TABLE
MERGE (table cible de type InMemory)
Dynamic and keyset cursors (degrades en curseurs statiques)
Requêtes Cross-database
Transactions Cross-database / transactions distribuées
Serveurs liés
Locking hints: TABLOCK, XLOCK, PAGLOCK, , etc. (NOLOCK est
supporté mais ignoré)
• Isolation level hints READUNCOMMITTED, READCOMMITTED
et READCOMMITTEDLOCK
•
•
•
•
•
•
•

#JSS2013
RTO / Recovery
• Phase d’analyse

– Recherche du dernier checkpoint

• Chargement des données

– Depuis les fichiers data/delta
– Effectuée en // : 1 thread par fichier
– Performance et RTO dictés par performance disque

• Phase de REDO

– Rejouer les transactions depuis dernier checkpoint
– Performance et RTO dictés par redo concurrent sur
• Tables Hekaton
• Tables « disk based »

• Phase de UNDO

– Seulement pour les tables « disk based »
– Tables Hekaton : seules les transactions avec commit sont loguées
#JSS2013
Migrer ?
Oui

•
•
•
•
•
•
•

Faible latence
Concurrence d’accès
Lock
Latch
Table values parameters
Tables « Temporaire »
Lookups

Non

•
•
•
•
•
•

Très gros volumes
Types de données
Contraintes
Schéma peu stable
Table scan
Sharepoint

#JSS2013
Par où commencer ?
• AMR Tool (Analyze, Migration, Reporting)
–
–
–
–

Identifie tables et procédures candidat à migration
Identifie tables et procédures ne pouvant pas migrer
Aperçu des gains de performance possibles
Démo

#JSS2013
Conclusion
• Performant
• Facilité
– Installation
– Exploitation
– Intégration

• Nécessite quelques ajustements
• Mais ce n’est qu’une V1 !!!
#JSS2013
Questions / réponses
• Merci pour votre présence
• Des articles et des scripts sur
http://conseilit.wordpress.com/?s=hekaton

• Les speakers des JSS sont là pour répondre
à toutes vos questions

#JSS2013
#JSS2013
#JSS2013

Contenu connexe

Tendances

Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Aurelien Navarre
 
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchéesDrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchéesAurelien Navarre
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linuxKhalid ALLILI
 
Bases de données réparties par la pratique
Bases de données réparties par la pratiqueBases de données réparties par la pratique
Bases de données réparties par la pratiqueAbdelouahed Abdou
 
Meetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon - Sécuriser un site drupalMeetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon - Sécuriser un site drupalAurelien Navarre
 
(R)évolutionnez vos bases de données avec Liquibase
(R)évolutionnez vos bases de données avec Liquibase(R)évolutionnez vos bases de données avec Liquibase
(R)évolutionnez vos bases de données avec LiquibaseFlorent Biville
 

Tendances (11)

Pgbadger
PgbadgerPgbadger
Pgbadger
 
Cours 70 410 - J2
Cours 70 410 - J2Cours 70 410 - J2
Cours 70 410 - J2
 
Liquibase
LiquibaseLiquibase
Liquibase
 
Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13
 
Liquibase en action
Liquibase en actionLiquibase en action
Liquibase en action
 
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchéesDrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linux
 
Bases de données réparties par la pratique
Bases de données réparties par la pratiqueBases de données réparties par la pratique
Bases de données réparties par la pratique
 
Meetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon - Sécuriser un site drupalMeetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon - Sécuriser un site drupal
 
(R)évolutionnez vos bases de données avec Liquibase
(R)évolutionnez vos bases de données avec Liquibase(R)évolutionnez vos bases de données avec Liquibase
(R)évolutionnez vos bases de données avec Liquibase
 
Cours 70 410-1
Cours 70 410-1Cours 70 410-1
Cours 70 410-1
 

En vedette

[JSS2015] Eradiction des deadlocks
[JSS2015] Eradiction des deadlocks[JSS2015] Eradiction des deadlocks
[JSS2015] Eradiction des deadlocksGUSS
 
[JSS2015] In memory and operational analytics
[JSS2015] In memory and operational analytics[JSS2015] In memory and operational analytics
[JSS2015] In memory and operational analyticsGUSS
 
Serveurs core et virtualisation
Serveurs core et virtualisationServeurs core et virtualisation
Serveurs core et virtualisationChristophe Laporte
 
[JSS2015] - Document db et nosql
[JSS2015] - Document db et nosql[JSS2015] - Document db et nosql
[JSS2015] - Document db et nosqlGUSS
 
Tune my Code! Code-Versionen testen via Edition-Based Redef. - Jérôme Witt, d...
Tune my Code! Code-Versionen testen via Edition-Based Redef. - Jérôme Witt, d...Tune my Code! Code-Versionen testen via Edition-Based Redef. - Jérôme Witt, d...
Tune my Code! Code-Versionen testen via Edition-Based Redef. - Jérôme Witt, d...dbi services
 
Datit207 scénarios hybrides entre sql server et windows azure
Datit207   scénarios hybrides entre sql server et windows azureDatit207   scénarios hybrides entre sql server et windows azure
Datit207 scénarios hybrides entre sql server et windows azureChristophe Laporte
 
Jss2014 performance counters and dmvs
Jss2014   performance counters and dmvsJss2014   performance counters and dmvs
Jss2014 performance counters and dmvsChristophe Laporte
 
JSS2013 : Haute disponibilité
JSS2013 : Haute disponibilitéJSS2013 : Haute disponibilité
JSS2013 : Haute disponibilitéChristophe Laporte
 
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...dbi services
 
Always on les solutions de haute disponibilité avec sql server 2012 (dat302)
Always on les solutions de haute disponibilité avec sql server 2012 (dat302)Always on les solutions de haute disponibilité avec sql server 2012 (dat302)
Always on les solutions de haute disponibilité avec sql server 2012 (dat302)Christophe Laporte
 
[JSS2015] Nouveautés SQL Server 2016:Sécurité,Temporal & Stretch Tables
[JSS2015] Nouveautés SQL Server 2016:Sécurité,Temporal & Stretch Tables[JSS2015] Nouveautés SQL Server 2016:Sécurité,Temporal & Stretch Tables
[JSS2015] Nouveautés SQL Server 2016:Sécurité,Temporal & Stretch TablesGUSS
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksSlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShareSlideShare
 

En vedette (17)

[JSS2015] Eradiction des deadlocks
[JSS2015] Eradiction des deadlocks[JSS2015] Eradiction des deadlocks
[JSS2015] Eradiction des deadlocks
 
Fusion io
Fusion ioFusion io
Fusion io
 
High performance jss 2012
High performance jss 2012High performance jss 2012
High performance jss 2012
 
[JSS2015] In memory and operational analytics
[JSS2015] In memory and operational analytics[JSS2015] In memory and operational analytics
[JSS2015] In memory and operational analytics
 
Serveurs core et virtualisation
Serveurs core et virtualisationServeurs core et virtualisation
Serveurs core et virtualisation
 
[JSS2015] - Document db et nosql
[JSS2015] - Document db et nosql[JSS2015] - Document db et nosql
[JSS2015] - Document db et nosql
 
Tune my Code! Code-Versionen testen via Edition-Based Redef. - Jérôme Witt, d...
Tune my Code! Code-Versionen testen via Edition-Based Redef. - Jérôme Witt, d...Tune my Code! Code-Versionen testen via Edition-Based Redef. - Jérôme Witt, d...
Tune my Code! Code-Versionen testen via Edition-Based Redef. - Jérôme Witt, d...
 
Datit207 scénarios hybrides entre sql server et windows azure
Datit207   scénarios hybrides entre sql server et windows azureDatit207   scénarios hybrides entre sql server et windows azure
Datit207 scénarios hybrides entre sql server et windows azure
 
Jss2014 performance counters and dmvs
Jss2014   performance counters and dmvsJss2014   performance counters and dmvs
Jss2014 performance counters and dmvs
 
JSS2013 : Haute disponibilité
JSS2013 : Haute disponibilitéJSS2013 : Haute disponibilité
JSS2013 : Haute disponibilité
 
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
 
Haute disponibilité jss2012
Haute disponibilité jss2012Haute disponibilité jss2012
Haute disponibilité jss2012
 
JSS2013 : Statistiques
JSS2013 : StatistiquesJSS2013 : Statistiques
JSS2013 : Statistiques
 
Always on les solutions de haute disponibilité avec sql server 2012 (dat302)
Always on les solutions de haute disponibilité avec sql server 2012 (dat302)Always on les solutions de haute disponibilité avec sql server 2012 (dat302)
Always on les solutions de haute disponibilité avec sql server 2012 (dat302)
 
[JSS2015] Nouveautés SQL Server 2016:Sécurité,Temporal & Stretch Tables
[JSS2015] Nouveautés SQL Server 2016:Sécurité,Temporal & Stretch Tables[JSS2015] Nouveautés SQL Server 2016:Sécurité,Temporal & Stretch Tables
[JSS2015] Nouveautés SQL Server 2016:Sécurité,Temporal & Stretch Tables
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & Tricks
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 

Similaire à JSS2013 : Hekaton

JSS2014 – Performances et DMV
JSS2014 – Performances et DMVJSS2014 – Performances et DMV
JSS2014 – Performances et DMVGUSS
 
Journées SQL Server 2012 Attentes et Performances
Journées SQL Server 2012   Attentes et PerformancesJournées SQL Server 2012   Attentes et Performances
Journées SQL Server 2012 Attentes et PerformancesDavid BAFFALEUF
 
GUSS - Les IO dans SQL Server (en partenariat avec DataCore)
GUSS - Les IO dans SQL Server (en partenariat avec DataCore)GUSS - Les IO dans SQL Server (en partenariat avec DataCore)
GUSS - Les IO dans SQL Server (en partenariat avec DataCore)GUSS
 
JSS2013 Session SharePoint pour le dba sql v1.0
JSS2013 Session SharePoint pour le dba sql v1.0JSS2013 Session SharePoint pour le dba sql v1.0
JSS2013 Session SharePoint pour le dba sql v1.0Patrick Guimonet
 
Guss webcasts Query Memory Grants - june 2013
Guss webcasts   Query Memory Grants - june 2013Guss webcasts   Query Memory Grants - june 2013
Guss webcasts Query Memory Grants - june 2013David BAFFALEUF
 
3 Microsoft Advanced Threat Analytics - Genève
3   Microsoft Advanced Threat Analytics - Genève3   Microsoft Advanced Threat Analytics - Genève
3 Microsoft Advanced Threat Analytics - GenèveaOS Community
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Microsoft
 
Présentation JSS2015 - Le Query Store de SQL Server 2016
Présentation JSS2015 - Le Query Store de SQL Server 2016Présentation JSS2015 - Le Query Store de SQL Server 2016
Présentation JSS2015 - Le Query Store de SQL Server 2016Guillaume Nocent
 
[JSS2015] Query Store
[JSS2015] Query Store[JSS2015] Query Store
[JSS2015] Query StoreGUSS
 
Deep Dive Performance , le In-Memory dans SQL Server
Deep Dive Performance , le In-Memory dans SQL ServerDeep Dive Performance , le In-Memory dans SQL Server
Deep Dive Performance , le In-Memory dans SQL ServerMicrosoft
 
Meetup Google Cloud
Meetup Google CloudMeetup Google Cloud
Meetup Google CloudPierre Coste
 
Re build Nantes 2013 SQL Server monitoring
Re build Nantes 2013   SQL Server monitoringRe build Nantes 2013   SQL Server monitoring
Re build Nantes 2013 SQL Server monitoringDavid BAFFALEUF
 
Déploiement ELK en conditions réelles
Déploiement ELK en conditions réellesDéploiement ELK en conditions réelles
Déploiement ELK en conditions réellesGeoffroy Arnoud
 
Exchange 2013 Dimensionnement et Performance
Exchange 2013 Dimensionnement et Performance Exchange 2013 Dimensionnement et Performance
Exchange 2013 Dimensionnement et Performance Microsoft Technet France
 
Alphorm.com Formation Microsoft Hyperconvergence
Alphorm.com Formation Microsoft HyperconvergenceAlphorm.com Formation Microsoft Hyperconvergence
Alphorm.com Formation Microsoft HyperconvergenceAlphorm
 
Slides Blue Summit 2017
Slides Blue Summit 2017Slides Blue Summit 2017
Slides Blue Summit 2017BlueXML
 
Construire des applications supportant la montée en charge avec SQL Azure (300)
Construire des applications supportant la montée en charge avec SQL Azure (300)Construire des applications supportant la montée en charge avec SQL Azure (300)
Construire des applications supportant la montée en charge avec SQL Azure (300)Microsoft Technet France
 
Construire des applications supportant la montée en charge avec SQL Azure (300)
Construire des applications supportant la montée en charge avec SQL Azure (300)Construire des applications supportant la montée en charge avec SQL Azure (300)
Construire des applications supportant la montée en charge avec SQL Azure (300)Microsoft
 
Elasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésElasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésMathieu Elie
 

Similaire à JSS2013 : Hekaton (20)

JSS2014 – Performances et DMV
JSS2014 – Performances et DMVJSS2014 – Performances et DMV
JSS2014 – Performances et DMV
 
Journées SQL Server 2012 Attentes et Performances
Journées SQL Server 2012   Attentes et PerformancesJournées SQL Server 2012   Attentes et Performances
Journées SQL Server 2012 Attentes et Performances
 
Exchange 2013 Bonnes pratiques
Exchange 2013 Bonnes pratiques Exchange 2013 Bonnes pratiques
Exchange 2013 Bonnes pratiques
 
GUSS - Les IO dans SQL Server (en partenariat avec DataCore)
GUSS - Les IO dans SQL Server (en partenariat avec DataCore)GUSS - Les IO dans SQL Server (en partenariat avec DataCore)
GUSS - Les IO dans SQL Server (en partenariat avec DataCore)
 
JSS2013 Session SharePoint pour le dba sql v1.0
JSS2013 Session SharePoint pour le dba sql v1.0JSS2013 Session SharePoint pour le dba sql v1.0
JSS2013 Session SharePoint pour le dba sql v1.0
 
Guss webcasts Query Memory Grants - june 2013
Guss webcasts   Query Memory Grants - june 2013Guss webcasts   Query Memory Grants - june 2013
Guss webcasts Query Memory Grants - june 2013
 
3 Microsoft Advanced Threat Analytics - Genève
3   Microsoft Advanced Threat Analytics - Genève3   Microsoft Advanced Threat Analytics - Genève
3 Microsoft Advanced Threat Analytics - Genève
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016
 
Présentation JSS2015 - Le Query Store de SQL Server 2016
Présentation JSS2015 - Le Query Store de SQL Server 2016Présentation JSS2015 - Le Query Store de SQL Server 2016
Présentation JSS2015 - Le Query Store de SQL Server 2016
 
[JSS2015] Query Store
[JSS2015] Query Store[JSS2015] Query Store
[JSS2015] Query Store
 
Deep Dive Performance , le In-Memory dans SQL Server
Deep Dive Performance , le In-Memory dans SQL ServerDeep Dive Performance , le In-Memory dans SQL Server
Deep Dive Performance , le In-Memory dans SQL Server
 
Meetup Google Cloud
Meetup Google CloudMeetup Google Cloud
Meetup Google Cloud
 
Re build Nantes 2013 SQL Server monitoring
Re build Nantes 2013   SQL Server monitoringRe build Nantes 2013   SQL Server monitoring
Re build Nantes 2013 SQL Server monitoring
 
Déploiement ELK en conditions réelles
Déploiement ELK en conditions réellesDéploiement ELK en conditions réelles
Déploiement ELK en conditions réelles
 
Exchange 2013 Dimensionnement et Performance
Exchange 2013 Dimensionnement et Performance Exchange 2013 Dimensionnement et Performance
Exchange 2013 Dimensionnement et Performance
 
Alphorm.com Formation Microsoft Hyperconvergence
Alphorm.com Formation Microsoft HyperconvergenceAlphorm.com Formation Microsoft Hyperconvergence
Alphorm.com Formation Microsoft Hyperconvergence
 
Slides Blue Summit 2017
Slides Blue Summit 2017Slides Blue Summit 2017
Slides Blue Summit 2017
 
Construire des applications supportant la montée en charge avec SQL Azure (300)
Construire des applications supportant la montée en charge avec SQL Azure (300)Construire des applications supportant la montée en charge avec SQL Azure (300)
Construire des applications supportant la montée en charge avec SQL Azure (300)
 
Construire des applications supportant la montée en charge avec SQL Azure (300)
Construire des applications supportant la montée en charge avec SQL Azure (300)Construire des applications supportant la montée en charge avec SQL Azure (300)
Construire des applications supportant la montée en charge avec SQL Azure (300)
 
Elasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésElasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautés
 

JSS2013 : Hekaton

  • 1. Les journées SQL Server 2013 Un événement organisé par GUSS #JSS2013
  • 2. Les journées SQL Server 2013 Hekaton Christophe LAPORTE Un événement organisé par GUSS #JSS2013
  • 3. Christophe LAPORTE ~ depuis 1997 6.5 <= SQL Server <= 2014 christophe_laporte@hotmail.fr http://conseilit.wordpress.com/ @conseilit #JSS2013
  • 4. Merci à nos sponsors #JSS2013
  • 5. Agenda • • • • • • • Pourquoi ? Comment ? Donc … Du changement ? Considérations Hardware Limitations Migrer ? #JSS2013
  • 6. Pourquoi Hekaton ? • Les disques flash sont plus rapides que les disques rotatifs mais moins rapide que la RAM • La quantité de mémoire augmente / le prix diminue • La puissance des CPU double tous les 2 ans, mais la fréquence ne croit plus • Tous les SGBD sont matures / optimisés • Il faut trouver de nouvelles voies pour augmenter les perfs #JSS2013
  • 7. Comment ? • Supprimer des lignes de code • Les latches – Mécanismes de protection des ressources partagées comme le buffer pool • Les locks – Mécanismes de contrôle de concurrence d'accès – Poser un verrou nécessite plusieurs latches … • Les plans d'exécutions – – – – Bien que compilés sont interprétés Compilation = parsing / algébrisation / optimisation Mais l'interpréteur va parcourir chaque élément de l'arbre du plan d'exécution Cout d'interprétation • Données sur disque -> négligeable • Données en mémoire -> important #JSS2013
  • 8. Hekaton … • • • • • Nouveau moteur Second moteur InMemory après Apollo Tables & index en mémoire Compilation native des procédures Plus de locks ni de latches #JSS2013
  • 9. « Les » moteurs SQL Server T-SQL Parser Metadata Management Catalogs Query Optimizer Apollo (Column Store) Relational Hekaton Query Engines Memory DB & Log #JSS2013
  • 10. Du changement ? • On ne change rien (ou presque) et ça change tout ! – Un requête peut être exécutée sur les 3 moteurs … – Le mode Interop permet d'accéder à une table InMemory • On change tout (ou presque) et ça ne change rien tout – Réécrite d'une procédure en version compilation native • Appel inchangé • Le client ne sait pas ce qu‘il se passe en arrière-plan • Pleinement Intégré à SQL Server ! – – – – Installation Sauvegardes HA (groupe de disponibilité, fci) Perfmon, XEvent, DMVs #JSS2013
  • 11. Durabilité des transactions 1/3 SCHEMA_AND_DATA SCHEMA_ONLY • • • • • Transactions durables, pas de perte de données Commit de transactions « synchrone » Ecrites dans TLog avant de rentre le contrôle à l’utilisateur Persisté sur disque juste avant le succès du commit Option par défaut • Données volatiles • Ne résiste pas à une restart • Encore plus performant que SCHEMA_AND_DATA #JSS2013
  • 12. Durabilité des transactions 2/3 • • • • DELAYED_DURABILITY Ecriture asynchrone du Tlog Enregistré dans un buffer qui est ensuite flushé sur disque Commit n’attends pas les IO du Tlog Si transactions concurrentes, bufferise et ensuite écrit des gros blocs • Tolère des pertes de données • Convient à des charge de travail élevée • Peut se gérer niveau • Database • Bloc de code • Commit #JSS2013
  • 13. Durabilité des transactions 3/3 COMMIT setting / Database setting DELAYED_DURABILITY = DISABLED (default) DELAYED_DURABILITY = ALLOWED DELAYED_DURABILITY = FORCED DELAYED_DURABILITY = OFF In-Memory OLTP only transaction. (OFF) Transaction is fully durable. Transaction is fully durable. Transaction is delayed durable. DELAYED_DURABILITY = ON In-Memory OLTP only transaction. Transaction is fully durable. Transaction is delayed durable. Transaction is delayed durable. DELAYED_DURABILITY = OFF Cross database or distributed transaction. Transaction is fully durable. Transaction is fully durable. Transaction is fully durable. DELAYED_DURABILITY = ON Cross database or distributed transaction. Transaction is fully durable. Transaction is fully durable. Transaction is fully durable #JSS2013
  • 15. Un enregistrement dans Hekaton #JSS2013
  • 16. Verrouillage – Concurrence d’accès • On assume que les conflits sont rares • 3 techniques combinées – Verrouillage optimiste – Transaction se déroule sans verrouillage – Conflits détectés lors de la phase de validation • Multi version – Update engendre un nouvel enregistrement – Donc pas de locks ! • TimeStamps – Utilisation du TimeStamp de début de transaction pour obtenir la bonne version de l’enregistrement • Démo #JSS2013
  • 17. Compilation native • Procédures stockées – Pas pour les requêtes Ad-Hoc – Attention : plan d'exécution déterminé au moment de la compilation • Les données présentes dans la table doivent être représentatives • Les statistiques DOIVENT être à jour – Compilation intervient • Lors de la création de la SP • Lorsque la base est mise Online • Pourquoi ? – Eviter l’interprétation du plan d’ exécution – Réduction du nombre d’instructions / transaction – Gagner en performance • Comment ? – Génération de code C #JSS2013
  • 19. Gestion des index • • • • Création concomitante à la table Ne sont présents qu’en mémoire 1 minimum, 8 maximum 2 types d’index – Hash • Tableau de pointeurs • Pointe vers les enregistrements – Range • Recherches sur des intervalles • BUCKET_COUNT difficile à estimer • BW-Tree #JSS2013
  • 21. Range Index The Bw-Tree: A B-tree for New Hardware Platforms http://research.microsoft.com/pubs/178758/bw-tree-icde2013-final.pdf #JSS2013
  • 23. Hardware – mémoire • 2 fois la taille des données • Limitations de mémoire embedded – 80 % maximum – Gestion via le resource governor • Attention à le pas consommer trop au détriment du buffer pool • Possibilité de jouer avec le Buffer Pool Extension – Clean pages sur disque rapide #JSS2013
  • 24. Hardware - disque • 2 à 3 fois espace d'une disk based table – Insert • Écriture dans fichier Data (128MB / « Pages » de 256KB) – Update • Nouvelle version de l’enregistrement dans fichier Data – Delete • Ecriture de la suppression dans fichier Delta – Checkpoint • Force la fermeture de fichier Data => augmentation de l’espace – Merge • Fusionne des paires de fichiers Data/Delta • SSD ou fusion IO car très peu de latence • N'oubliez pas l'espace pour les index ! • Non ! Personne ne suit dans la salle ??? #JSS2013
  • 25. Limitations (SQL 2014) • Prévu pour du High Troughput OLTP – Rows 8060 max : • Pas de type off row ou LOB (varchar max), sqlvariant – Pas de types CLR (XML ...) – Pas de triggers • Design / Exploitation – – – – – Pas de FK Pas de check Pas de identity Pas de alter table => drop / create table Pas de create index => drop / create table #JSS2013
  • 26. Limitations (SQL 2014) … encore (désolé) TRUNCATE TABLE MERGE (table cible de type InMemory) Dynamic and keyset cursors (degrades en curseurs statiques) Requêtes Cross-database Transactions Cross-database / transactions distribuées Serveurs liés Locking hints: TABLOCK, XLOCK, PAGLOCK, , etc. (NOLOCK est supporté mais ignoré) • Isolation level hints READUNCOMMITTED, READCOMMITTED et READCOMMITTEDLOCK • • • • • • • #JSS2013
  • 27. RTO / Recovery • Phase d’analyse – Recherche du dernier checkpoint • Chargement des données – Depuis les fichiers data/delta – Effectuée en // : 1 thread par fichier – Performance et RTO dictés par performance disque • Phase de REDO – Rejouer les transactions depuis dernier checkpoint – Performance et RTO dictés par redo concurrent sur • Tables Hekaton • Tables « disk based » • Phase de UNDO – Seulement pour les tables « disk based » – Tables Hekaton : seules les transactions avec commit sont loguées #JSS2013
  • 28. Migrer ? Oui • • • • • • • Faible latence Concurrence d’accès Lock Latch Table values parameters Tables « Temporaire » Lookups Non • • • • • • Très gros volumes Types de données Contraintes Schéma peu stable Table scan Sharepoint #JSS2013
  • 29. Par où commencer ? • AMR Tool (Analyze, Migration, Reporting) – – – – Identifie tables et procédures candidat à migration Identifie tables et procédures ne pouvant pas migrer Aperçu des gains de performance possibles Démo #JSS2013
  • 30. Conclusion • Performant • Facilité – Installation – Exploitation – Intégration • Nécessite quelques ajustements • Mais ce n’est qu’une V1 !!! #JSS2013
  • 31. Questions / réponses • Merci pour votre présence • Des articles et des scripts sur http://conseilit.wordpress.com/?s=hekaton • Les speakers des JSS sont là pour répondre à toutes vos questions #JSS2013