Goo*_*bot 5 mysql trigger performance mysql-5.5 query-performance
我知道TRIGGERs 很有用,因为它们负责后续查询,但是从性能的角度来看,它们也有优势吗?
将两个或三个查询替换为
INSERT INTO table1 ...
UPDATE table2 ...
UPDATE table3 ...
Run Code Online (Sandbox Code Playgroud)
使用基于触发器的查询作为
INSERT INTO table 1
Run Code Online (Sandbox Code Playgroud)
带触发器
CREATE TRIGGER test
AFTER INSERT ON table1
FOR EACH ROW BEGIN
UPDATE table2 ... WHERE id=NEW.id;
UPDATE table3 ... WHERE id=NEW.id;
END
Run Code Online (Sandbox Code Playgroud)
我们仍然拥有相同性能的三个查询吗?我的意思是我们执行后续查询或执行TRIGGER是否重要?
如果我们使用 API(例如通过 PHP 进行查询)会怎样。后续查询是内部的,无需连接器/驱动程序。是否TRIGGER提高了性能?
附加信息:数据库是带有 innoDB 的 mysql 5.5。
我假设table1、table2和table3也是InnoDB表。
由于自动提交,每个插入/更新都会写入磁盘(数据/索引树更新),这会很慢,并且您不能使用 BEGIN TRANSACTION 和 COMMIT 来加快速度。
如果table1、table2和table3不是InnoDB,而是MyISAM(表锁定)或Memory(表锁定),这可能会导致不需要的表锁定“功能”,从而会减慢速度。
编辑是因为关闭注释仅分析了触发器代码背后的源代码的一小部分,我将更详尽地分析触发器背后的源代码,以查看是否存在任何性能影响以及这可能产生的相对性能影响。
| 归档时间: |
|
| 查看次数: |
7261 次 |
| 最近记录: |