CodeSOD : Un dernier identifia... Note

CodeSOD : Un dernier identifiant

La société de Chris a été confrontée à une augmentation inattendue des coûts de transfert de données lorsque son application web, hébergée sur le fournisseur de cloud B, a interagi avec une base de données MySQL sur le fournisseur de cloud A. Ils ne s'attendaient qu'à quelques gigaoctets de transfert de données par mois. Cependant, ils constataient des téraoctets, dépassant considérablement leur budget. L'enquête a révélé que chaque opération d'insertion récupérait une quantité énorme de données. La cause profonde était une requête SQL mal formée : SELECT last_insert_id() FROM some_table_name. Cette requête, au lieu de simplement récupérer le dernier ID inséré, était instruite pour renvoyer cet ID pour chaque ligne de la table spécifiée. Comme la table contenait des millions de lignes, cela a entraîné des millions de répétitions du dernier ID inséré renvoyées à chaque insertion. Par conséquent, chaque opération d'insertion générait un transfert de données substantiel d'environ 30 Mo. La mise en œuvre de la correction technique a été simple. Cependant, la coordination du changement avec la société de développement web et leur environnement d'hébergement, y compris les tests et le déploiement, a pris six semaines. Une partie de ce temps a été consacrée à convaincre les développeurs web que le problème se produisait effectivement et qu'il était causé par leur code.