IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Les systèmes de JIT peuvent améliorer la performance des requêtes SQL complexes


Sujet :

PostgreSQL

  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 617
    Points : 188 587
    Points
    188 587
    Par défaut Les systèmes de JIT peuvent améliorer la performance des requêtes SQL complexes
    Les systèmes de JIT améliorent la performance des requêtes SQL complexes
    Une extension de PostgreSQL intègre LLVM et diminue les temps de traitement

    Les systèmes de gestion de bases de données traitent des volumes de données de plus en plus gros, avec des requêtes de plus en plus complexes, notamment pour la prise de décision. Les problèmes de performance du modèle relationnel ne viennent plus seulement de l’accès aux données sur les disques durs ou SSD, mais également du processeur, qui doit effectuer les opérations complexes.

    Chaque système optimise les requêtes SQL avant de les exécuter… et ces systèmes ont permis de garder un très bon niveau de performance jusqu’à présent. C’est d’ailleurs la raison pour laquelle SQL a pu s’imposer par rapport à des langages d’interrogation de plus bas niveau : ces requêtes peuvent s’exécuter plus vite que du code écrit spécifiquement pour chaque requête (à moins que chaque développeur passe énormément de temps à optimiser ce code). La requête est analysée, puis l’optimiseur détermine un plan d’exécution de la requête : comment itérer à travers les éléments d’une table, les filtrer, les agréger, mais surtout l’ordre de ces opérations.

    Cependant, quand les accès au disque ne sont plus prépondérants dans les temps de réaction, repenser cette partie devient important. La situation actuelle revient à utiliser un interpréteur pour un langage de programmation avec des optimisations simples (comme Python). Les dernières expériences de la communauté LLVM (plus connue pour le compilateur C et C++ Clang) montrent que, en changeant de paradigme, on peut diminuer les temps d’exécution des requêtes les plus complexes d’un facteur cinq à sept (sur des tests synthétiques).

    Pour ce faire, les développeurs ont utilisé des techniques similaires à celles utilisées pour les implémentations rapides de Python ou pour les machines virtuelles Java et .Net : la compilation juste à temps. Il s’agit donc de générer du code qui effectue la requête, puis de l’optimiser avec les mêmes techniques que les compilateurs C et C++, notamment : elles sont éprouvées et donnent d’excellents résultats sur n’importe quel type de programme.

    L’extension développée pour PostgreSQL exploite une bonne partie du code d’exécution déjà développé. Ainsi, les fonctions de base d’accès à la base de données sont réutilisés (comme pour itérer dans une table), puis appelées depuis le code de la requête : le tout est passé au moteur de compilation juste à temps (JIT). Il inclut automatiquement le code des primitives de PostgreSQL dans celui de la requête, ce qui lui permet d’optimiser fortement le fonctionnement du code complet.

    Ces premiers développements sont assez partiels, toutes les opérations ne sont pas accélérées de la sorte, mais les résultats actuels sont prometteurs. Le fonctionnement global est améliorable, puisque l’implémentation est loin d’être peaufinée. Notamment, la compilation peut s’effectuer de manière parallèle. Après ces étapes de nettoyage, cette extension pourra être distribuée au plus grand nombre sous une licence libre.


    Source : Speeding up query execution in PostgreSQL using LLVM JIT compiler.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  2. #2
    Expert confirmé
    Avatar de TiranusKBX
    Homme Profil pro
    Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Inscrit en
    Avril 2013
    Messages
    1 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 476
    Points : 4 805
    Points
    4 805
    Billets dans le blog
    6
    Par défaut
    Une approche intéressante, je demande à voir par la suite ce que ça donne
    Rien, je n'ai plus rien de pertinent à ajouter

  3. #3
    Membre confirmé Avatar de Max Lothaire
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 155
    Points : 578
    Points
    578
    Par défaut
    Avec quel type de requête a-t-on un gain significatif ?
    Est-ce que ça change quelque chose sur de très grosses bases de données ?

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 617
    Points : 188 587
    Points
    188 587
    Par défaut
    Dans http://llvm.org/devmtg/2016-09/slide...greSQLLLVM.pdf, pages 20 et 21, ils parlent de bons gains (facteur cinq en moyenne) sur des bases de données de 100 Go — ce qui n'est pas rien, mais pas vraiment énorme non plus… — sur à peu près toutes les requêtes TCP-H. Maintenant, tu ne peux t'attendre à de vrais gains que dans les cas où les accès au disque ne sont pas limitants (et ces tests sont relativement préliminaires, leur code semble loin d'être finalisé et utilisable en production).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 758
    Points : 52 537
    Points
    52 537
    Billets dans le blog
    5
    Par défaut
    Cela fait déjà plusieurs années que la concurrence (Oracle ou SQL Server) est allé nettement plus loin en offrant notamment le In Memory et la compilation native en C des procédures et requêtes...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre habitué
    Homme Profil pro
    CTO
    Inscrit en
    Mars 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : CTO

    Informations forums :
    Inscription : Mars 2012
    Messages : 62
    Points : 161
    Points
    161
    Par défaut
    ça a l'ai très prometteur pour PostgreSQL, surtout pour un base Open-source et très abordable. Je pense qu'on peut dire que mySQL(et ses Fork) devrait être enterré maintenant.

Discussions similaires

  1. [10g] Améliorer la Performance d’une requête
    Par sirty dans le forum PL/SQL
    Réponses: 1
    Dernier message: 02/07/2014, 10h01
  2. performance des requêtes SQL
    Par haykelFST dans le forum Développement
    Réponses: 3
    Dernier message: 20/10/2011, 18h28
  3. Mesurer les performances des requêtes Sybase
    Par kenji_getpowered dans le forum Sybase
    Réponses: 0
    Dernier message: 28/09/2011, 17h39
  4. [SQL] Gérer les erreurs des requêtes SQL
    Par eagleleader dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/10/2007, 13h28
  5. [Système] Log des requêtes SQL
    Par eric41 dans le forum Langage
    Réponses: 6
    Dernier message: 13/08/2007, 09h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo