Emmanuel Quincerot

Emmanuel Quincerot

Doctolib

Développeur fullstack depuis 12 ans, j'ai travaillé sur des sujets variés qui m'ont confronté à de nouvelles problématiques : applications web, migration et tests de pipelines Jenkins, docker... Dernièrement j'ai plus particulièrement travaillé sur la scalabilité de la base de données Doctolib.

archisec

Track : Architecture, Performance and Security

Type de présentation : Conference

30 index sur une table PG de 6To : défis et solutions

Au cours du temps, nos bases de données grossissent. Viennent alors les problématiques de performance. Une solution classique consiste à rajouter des index. Ceux-ci jouent effectivement un rôle crucial sur les performances, mais ils peuvent également être contre-productifs. Les pièges classiques : ajouter un index à chaque nouvelle requête, mal les définir ou les laisser vieillir sans s'en occuper.

Chez Doctolib nous avons une BDD Postgres de 30To, avec des pics quotidiens de 250k requêtes par seconde. La plus grosse table fait 6To, elle a 30 index.

Alors comment nous sommes-nous outillés pour améliorer l'usage de nos index et réduire leur nombre ? Nous parlerons de représentativité de tests, de pièges SQL, de write-amplification, de benchmark d'index, et des défis que notre équipe a rencontrés pendant quelques mois.