Optimisation des déclencheurs MySQL à l'aide d'horodatages pour détecter les modifications réelles des données
Le défi :
L'option "APRÈS MISE À JOUR" de MySQL déclenche le feu même sans modifications réelles des données, entraînant des exécutions inutiles et des goulots d'étranglement des performances.
La solution :
L'utilisation d'horodatages offre une solution efficace. Le type de données TIMESTAMP
de MySQL se met automatiquement à jour avec l'heure actuelle à chaque modification de ligne. En comparant les valeurs d'horodatage NEW
et OLD
dans le déclencheur, vous pouvez identifier avec précision les véritables modifications des données.
Code illustratif :
Ce déclencheur utilise des horodatages pour s'exécuter uniquement en cas de modifications réelles des données :
<code class="language-sql">CREATE TRIGGER ins_sum AFTER UPDATE ON foo FOR EACH ROW BEGIN IF NEW.ts != OLD.ts THEN INSERT INTO bar (a, b) VALUES(NEW.a, NEW.b); END IF; END;</code>
Mécanisme :
NEW
: représente les nouvelles valeurs de la ligne mise à jour.OLD
: Représente les valeurs de la ligne avant la mise à jour.NEW.ts != OLD.ts
: Cette comparaison garantit que le déclencheur s'active uniquement lorsque l'horodatage diffère, indiquant un véritable changement de données.Avantages :
Considérations importantes :
TIMESTAMP
est mise à jour uniquement lorsque les données changent. Si l'horodatage peut être modifié indépendamment, cette approche peut ne pas être fiable.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!