Développement logiciel
Conception de bases relationnelles et optimisation SQL
Une formation pour ingénieurs sur les deux décisions qui déterminent la performance d'une base : la modélisation du schéma et la façon dont l'optimiseur exécute les requêtes. Elle couvre normalisation et dénormalisation raisonnée, clés et contraintes, stratégie d'index, plans d'exécution, cardinalité et réécriture de requêtes.
Aperçu
Un apprentissage pratique pour le transfert en situation de travail.
Une requête qui répond en huit millisecondes sur un poste de développement et en quarante secondes en production ne relève presque jamais du matériel. C'est un index composite absent, un prédicat enveloppé dans une fonction qui rend tout index inutilisable, une estimation statistique fausse de trois ordres de grandeur, ou un ORM émettant une requête par ligne de résultat. Cette formation part du moteur : stockage des lignes sur les pages, ce qu'un index B-tree peut résoudre, estimation de cardinalité et choix entre jointures par boucle imbriquée, hachage ou fusion, lecture d'un plan quand lignes estimées et réelles divergent. La conception du schéma est traitée comme la cause amont.
Prérequis
Expérience pratique du SQL incluant jointures, agrégation et sous-requêtes, et connaissance d'au moins un moteur relationnel.
Objectifs
- Modéliser un schéma relationnel en troisième forme normale et justifier chaque écart.
- Choisir types, clés et contraintes rendant les états invalides impossibles à représenter.
- Concevoir des index composites, couvrants, partiels et d'expression pour les accès réels.
- Lire un plan d'exécution et identifier l'opérateur à l'origine du coût.
- Diagnostiquer erreurs de cardinalité, statistiques obsolètes et prédicats non sargables.
- Réécrire les requêtes lentes et éliminer les accès N+1 introduits par les ORM.
Public cible
- Développeurs backend dont les applications sont limitées par la latence base de données
- Administrateurs de bases formalisant les standards d'index et de maintenance
- Ingénieurs data concevant des schémas opérationnels et de staging
- Architectes solution revoyant les modèles de données avant le développement
- Ingénieurs support applicatif enquêtant sur les ralentissements en production
- Responsables techniques en charge de la capacité, du coût et des budgets de performance
Programme
Une structure claire pour le parcours d'apprentissage.
Programme
Les points du programme sont regroupés dans un seul bloc au lieu de créer un module par ligne.
Module 1 : Modélisation relationnelle et normalisation
Entités, relations et cardinalités définies avant toute création de table
Première, deuxième, troisième forme normale et BCNF appliquées à un schéma réel
Anomalies de mise à jour, d'insertion et de suppression : preuve d'une sous-normalisation
Dénormalisation raisonnée : ce que la vitesse de lecture coûte en complexité d'écriture
Module 2 : Conception physique, types et contraintes
Stockage des lignes, structure des pages, fill factor et importance de l'ordre des colonnes
Types numériques, texte, temporels et JSON et le coût de colonnes trop larges
Clés de substitution ou naturelles, contraintes unique et check, et intégrité référentielle
Stratégies de partitionnement des grandes tables et leur effet sur l'élagage
Module 3 : Stratégie d'indexation
Structure B-tree, sélectivité et rôle décisif de l'ordre des colonnes de tête
Index couvrants, colonnes incluses et suppression de l'accès à la table
Index partiels, d'expression, hash, GIN et plein texte pour prédicats spécifiques
Coût en écriture : mesurer la maintenance des index et supprimer les inutilisés
Module 4 : Lire les plans d'exécution
EXPLAIN et EXPLAIN ANALYZE : lignes et temps estimés face aux valeurs réelles
Comparaison entre scan séquentiel, scan d'index, index-only et bitmap
Boucle imbriquée, hash join et merge join : pourquoi le planificateur choisit chacun
Statistiques, histogrammes, fréquence d'ANALYZE et erreurs sur colonnes corrélées
Module 5 : Réécriture et optimisation des requêtes
Prédicats sargables : éviter fonctions et conversions sur la colonne indexée
Réécritures EXISTS, IN et JOIN et suppression des sous-requêtes corrélées
Fonctions de fenêtre et CTE : quand elles clarifient et quand elles bloquent l'optimiseur
Détecter et corriger les accès N+1 générés par le chargement paresseux des ORM
Module 6 : Concurrence, maintenance et performance dans la durée
Niveaux d'isolation, verrouillage et diagnostic des interblocages via les journaux
MVCC, gonflement des tables, stratégie de vacuum et de reconstruction
Journaux de requêtes lentes, échantillonnage des attentes et méthode de tuning répétable
Migrations de schéma sur grandes tables sans verrous prolongés ni interruption
Supports fournis
- Manuel de formation, exemples de code commentés et notes de référence
- Environnement de laboratoire et dépôts de démarrage
- Exercices, check-lists et modèles de code réutilisables
- Certificat de participation 4D
- Accompagnement technique après la formation
Options de formation
Les programmes peuvent être organisés en entreprise, en ligne ou dans un format hybride selon le calendrier, la localisation et les objectifs de vos équipes. Lorsqu'un certificat ou un examen externe est inclus, les règles et frais de certification restent soumis aux politiques de l'organisme certificateur, tandis que 4D assure la formation et l'accompagnement à la préparation.
Pourquoi choisir 4D
4D apporte votre journal de requêtes lentes dans la salle. Les formateurs prennent les dix instructions les plus coûteuses de votre production, lisent leurs plans avec les développeurs qui les ont écrites et le DBA qui les exploite, puis reconstruisent les index et les choix de schéma sous-jacents. Les équipes repartent avec des temps mesurés avant et après et une méthode de tuning réutilisable au prochain incident.
Formations liées
Fondamentaux de la programmation Python
Une introduction pratique à Python pour les ingénieurs et analystes qui ont besoin de code opérationnel plutôt que d'extraits de tutoriel. Les participants acquièrent de l'aisance avec les types, les collections, les fonctions, les fichiers et la gestion des erreurs, puis construisent un programme complet.
View coursePython intermédiaire et pratiques de code propre
Conçue pour les développeurs dont le code Python fonctionne mais résiste au changement. Le programme couvre dataclasses, générateurs, décorateurs, gestionnaires de contexte et annotations de types, puis applique les refactorings qui transforment un module interminable en unités testées contrôlées par black, ruff et mypy.
View courseAutomatisation et scripting Python pour les tâches métier
Destinée aux équipes qui perdent chaque semaine des heures en manipulations de fichiers, de tableurs et de rapports. Les participants automatisent ces tâches avec Python : traitement de fichiers en lot, Excel et CSV, appels d'API REST, alertes par e-mail et tâches planifiées qui signalent clairement toute défaillance.
View course