Mysql

TRIGGER 會提高性能嗎?

  • December 7, 2013

我知道TRIGGERs 很有用,因為它們會處理後續查詢,但是從性能的角度來看它們也有優勢嗎?

將兩個或三個查詢替換為

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

使用基於觸發器的查詢作為

INSERT INTO table 1

帶觸發器

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. 我們是否仍然有相同的三個查詢具有相同的性能?我的意思是,如果我們執行後續查詢或TRIGGER確實有關係嗎?
  2. 如果我們使用 API 會怎樣(比如通過 PHP 進行查詢)。隨後的查詢是內部的,不需要連接器/驅動程序。是否TRIGGER提高了性能?

附加資訊:數據庫是帶有 innoDB 的 mysql 5.5。

我假設 table1、table2 和 table3 也是 InnoDB 表。

由於自動送出,每次插入/更新都會寫入磁碟(數據/索引樹更新),這會很慢,您不能使用 BEGIN TRANSACTION 和 COMMIT 來加快速度。

如果 table1、table2 和 table3 不是 InnoDB,而是 MyISAM(表鎖定)或記憶體(表鎖定),這可能會導致不需要的表鎖定“功能”,這會減慢速度。

編輯是因為關閉註釋只分析了觸發器程式碼背後的原始碼的一小部分,我將更詳盡地分析觸發器背後的原始碼,以查看是否存在任何性能影響以及這可能對性能產生的相對影響。

引用自:https://dba.stackexchange.com/questions/48797