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

conference

Web
Intermediate
logo

Friday 11:20 Belem

Flora Briand

Flora Briand

DoctolibNantes, France
Emmanuel Quincerot

Emmanuel Quincerot

DoctolibNantes, France

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.