使用 MySQL 触发器的优点/缺点

Posted

技术标签:

【中文标题】使用 MySQL 触发器的优点/缺点【英文标题】:Advantages/disadvantages of using MySQL triggers 【发布时间】:2016-11-04 20:20:37 【问题描述】:

使用 mysql 触发器在一个表和另一个表之间保持数据同步,甚至在数据更改时更新聚合/​​报告表的优点/缺点是什么?

我所说的聚合/报告表是指汇总其他表中存在的数据的表,例如:

tbl_user_location:
1 Mike  New York
2 John  London
3 Emily Paris
4 Jack  New York

tbl_summary:
New York 2
London 1
Paris 1

随着tbl_user_location 中的数据实时变化,摘要也会更新。

这种方法有哪些替代方法?

【问题讨论】:

【参考方案1】:

优势:SQL 触发器提供了另一种运行计划任务的方法。在对表中的数据进行更改之前或之后自动调用触发器。

劣势:但是,SQL 触发器是从客户端应用程序中以不可见的方式调用和执行的,因此很难弄清楚数据库层发生了什么。这可能会增加数据库服务器的开销。

如果您谈论的是高速数据,甚至不要考虑触发器。我建议您使用流处理技术。您可以使用 mysql bin-logs 来捕获事件并添加到流中然后进行处理。对于实时数据聚合来说,简单的触发器并不是一个好主意。

试试下面的方法,你可能需要对这些进行一些搜索 例如:(mysql binlogs)maxwell->kafka->spark(处理后的数据)

【讨论】:

谢谢!显然麦克斯韦或类似的东西是我正在寻找的。那里似乎有一堆MySQL changes data stream tools。 通过“如果您谈论的是高速数据,甚至不要考虑触发器”,您指的是触发器是同步的事实,即它们的处理“阻止”初始查询? 嘿,高速意味着,当每秒的事件数很高时,触发器会一直被触发,从而给服务器带来高负载。我说是因为我用过它,一旦速度变高它就失败了

以上是关于使用 MySQL 触发器的优点/缺点的主要内容,如果未能解决你的问题,请参考以下文章

历史表的优点、缺点和陷阱 - 使用触发器、存储过程或在应用程序级别 [关闭]

mysql内部代码的优缺点

MySQL-存储过程与触发器

linux12 -MYSQL数据库 -->08视图触发器存储过程函数流程控制

轻松掌握MySQL数据库存储过程和触发器原理

MySQL的触发器