Mise en situation : la base de données sature

15 enquêtes sur une base de données à bout de souffle : lectures répétées, index manquants ou en trop, retard de réplication, points chauds, verrous, pagination, ruée sur le cache. Pour chacune, la cause puis la solution typique, avec l'autre solution et le piège.

  • 37 cartes
  • 3 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Lectures
  2. Écritures
  3. Exploitation

Quelques cartes du deck

  • La base est à 100 %, toujours pour les mêmes produits

    - CPU de la base à 100 %
    - 95 % des requêtes sont des lectures
    - Le top 100 des produits fait 80 % des lectures

    Quelle est la cause la plus probable ?

    • Il manque des serveurs applicatifs
    • La base relit sans cesse les mêmes données
    • Les écritures saturent la base
    • Le disque de la base est plein
    Voir la réponse

    La base relit sans cesse les mêmes données

    Les lectures dominent et se concentrent sur peu de données : elles n'ont pas besoin d'aller à la base à chaque fois.

  • La base est à 100 %, toujours pour les mêmes produits

    Cause : la base relit sans cesse les mêmes données.

    Quelle est la solution typique ?

    • Un cache devant la base : lire d'abord le cache, sinon la base, puis remplir le cache (cache-aside)
    • Ajouter des serveurs applicatifs
    • Partitionner la base par date
    • Ajouter un CDN pour les images
    Voir la réponse

    Un cache devant la base : lire d'abord le cache, sinon la base, puis remplir le cache (cache-aside)

    Les données les plus demandées sont servies depuis la mémoire ; la base ne voit plus qu'une petite partie des lectures.

    Autre solution : Des réplicas en lecture qui se partagent les lectures.

    Piège : Quand un produit change, son entrée en cache doit être invalidée, sinon on affiche un prix périmé.

  • « Mes commandes » met 6 secondes

    - La table des commandes a 10 millions de lignes
    - La requête filtre sur l'identifiant du client
    - Le plan d'exécution montre un parcours complet de la table

    Quelle est la cause la plus probable ?

    • La base manque de mémoire
    • Le réseau est saturé
    • Il manque un index sur la colonne filtrée
    • Il y a trop de clients connectés
    Voir la réponse

    Il manque un index sur la colonne filtrée

    Sans index, la base lit les 10 millions de lignes pour en trouver quelques-unes.