J'ai un déclencheur défini sur une table qui, à chaque insertion, mise à jour ou suppression, alimente une autre table. Cela aura-t-il un impact sur les performances de la base de données dans son ensemble ? Existe-t-il d'autres solutions pour améliorer les performances des déclencheurs ?
Réponse
Trop de publicités?Cela aura-t-il un impact sur les performances ? Oui. La base de données aura plus de travail à faire et les performances s'en ressentiront. Mais est-ce important ? En fonction de l'action de votre trigger, de la structure de vos tables et de la charge de base de la base de données, l'impact peut passer inaperçu aux yeux de vos utilisateurs finaux. Si vous devez vraiment vous en préoccuper, je vous suggérerais alors d'établir le profil de la base de données avec et sans le déclencheur afin de déterminer si le coût est trop élevé par rapport à ce qu'il apporte.
En ce qui concerne les alternatives, vous n'avez pas mentionné la base de données que vous utilisez. Certaines bases de données comme Postgresql fournissent un système de règles qui est mis en œuvre différemment de leur système de déclenchement, ce qui pourrait avoir des résultats différents pour votre cas d'utilisation. Encore une fois, vous devez établir le profil du système et voir lequel est le plus performant pour vos besoins exacts.
En fonction de votre cas d'utilisation et de vos données, une autre solution pourrait consister à remplacer le déclencheur par une petite application qui s'exécute en dehors des heures de pointe afin de fournir la même fonctionnalité.
Je tiens cependant à préciser que si tout fonctionne et que les utilisateurs finaux sont satisfaits des performances du système, je ne m'inquiéterais pas de l'impact des déclencheurs à ce stade. Chercher à améliorer les performances pour le plaisir d'améliorer les performances peut être une perte de temps et de ressources si cela ne résout pas un problème actuel ou prévu.