web-dev-qa-db-fra.com

Un déclencheur améliore-t-il la performance?

Je comprends que TRIGGERs sont utiles, car ils s'occupent des requêtes ultérieures, mais ont-ils un avantage du point de vue de la performance aussi?

Remplacer deux ou trois requêtes comme

INSERT INTO table1 ...
UPDATE table2 ...
UPDATE table3 ...

avec une requête basée sur la gâchette comme

INSERT INTO table 1

avec déclencheur

CREATE TRIGGER test
AFTER INSERT ON table1
FOR EACH ROW BEGIN
UPDATE table2 ... WHERE id=NEW.id;
UPDATE table3 ... WHERE id=NEW.id;
END
  1. Avons-nous toujours les trois mêmes requêtes avec des performances identiques? Je veux dire importe-t-il si nous exécutons les requêtes ultérieures ou le TRIGGER fait?

  2. Et si nous utilisons une API (comme des requêtes conductrices à travers PHP). Les requêtes ultérieures sont internes sans avoir besoin de connecteur/pilote. Est-ce que le TRIGGER améliore la performance?

Informations supplémentaires: La base de données est MySQL 5.5 avec Innodb.

5
Googlebot

J'assume Table1, Tabley2 et Tabley3 sont également des tables innovées.

En raison de l'autocommande, chaque insertion/mise à jour sera écrite sur le disque (mise à jour de l'arborescence de données/index), ce qui sera lent et que vous ne pouvez pas utiliser la transaction de commencer et vous engager à accélérer.

Si Table1, Tabley2 et Table3 ne sont pas innovés, mais MyISAM (verrouillage de table) ou la mémoire (verrouillage de table), cela pourrait entraîner une fonctionnalité non désirée verrouillage de table ", ce qui va ralentir.

édité parce que désactivé uniquement une très petite partie du code source derrière le code de déclenchement est analysée, je vais analyser le code source derrière des déclencheurs plus exhaustifs pour voir s'il y a des conséquences sur la performance et de l'impact de la performance relative que cela peut avoir.

3
Raymond Nijland

L'utilisation d'un déclencheur n'affectera pas de manière significative la vitesse d'exécution - à la fin, le système de base de données exécute les mêmes opérations.

Mais si vous êtes sûr que chaque insertion mandate les mises à jour, les déclencheurs sont un excellent moyen d'assurer l'intégrité de la base de données, de sorte que tout cela le faites.

4
Twinkles