320 likes | 446 Views
Hekaton Christophe LAPORTE. Christophe LAPORTE. ~ depuis 1997 6.5 <= SQL Server <= 2014. @ c onseilit. christophe_laporte@hotmail.fr. http://conseilit.wordpress.com/. Merci à nos sponsors. Agenda. Pourquoi ? Comment ? Donc … Du changement ? Considérations Hardware Limitations
E N D
Hekaton Christophe LAPORTE
Christophe LAPORTE ~ depuis 1997 6.5 <= SQL Server <= 2014 @conseilit christophe_laporte@hotmail.fr http://conseilit.wordpress.com/
Agenda • Pourquoi ? • Comment ? • Donc … • Du changement ? • Considérations Hardware • Limitations • Migrer ?
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
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
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
« Les » moteurs SQL Server T-SQL Catalogs Parser Metadata Management Query Optimizer Query Engines Apollo (Column Store) Hekaton Relational Memory DB & Log
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 Interoppermet 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
Démonstration • Création d’une table • Création d’une base
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
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
Démonstration • Native CompiledProcedure
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
Range Index The Bw-Tree: A B-tree for New Hardware Platforms http://research.microsoft.com/pubs/178758/bw-tree-icde2013-final.pdf
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
Hardware - disque • 2 à 3 fois espace d'une diskbasedtable • 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 ???
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
Limitations (SQL 2014) … encore (désolé) • TRUNCATE TABLE • MERGE (table cible de type InMemory) • Dynamic and keyset cursors (degrades en curseursstatiques) • Requêtes Cross-database • Transactions Cross-database / transactions distribuées • Serveurs liés • Locking hints: TABLOCK, XLOCK, PAGLOCK, , etc. (NOLOCK estsupportémaisignoré) • Isolation level hints READUNCOMMITTED, READCOMMITTED et READCOMMITTEDLOCK
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 « diskbased » • Phase de UNDO • Seulement pour les tables « diskbased » • Tables Hekaton: seules les transactions avec commit sont loguées
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
Conclusion • Performant • Facilité • Installation • Exploitation • Intégration • Nécessite quelques ajustements • Mais ce n’est qu’une V1 !!!
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