mysql - 使用 MySQL 触发器的优缺点

标签 mysql stored-procedures database-design triggers mysql-routines

使用 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 中的数据实时变化,摘要也会更新。

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

最佳答案

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

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

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

尝试像下面这样的东西,你可能需要对这些进行一些搜索 例如:(mysql binlogs) maxwell->kafka->spark (处理过的数据)

关于mysql - 使用 MySQL 触发器的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38162045/

相关文章:

c# - C# 存储过程调用、参数嗅探/优化问题的巨大减速?

mysql - 在mysql表中存储和查询json

mysql - 实现图树的最佳数据库结构

checkin 解释计划时使用 JOIN TYPE 'ALL' 的 MYSQL

php - 使用 PHP 从 MySQL 数据库中提取 ID 号

mysql - 跟踪奴隶滞后

entity-framework - 具有EF的WCF数据服务无法公开导入的功能

python - 如何在 Python 中使用表值参数访问 SQL Server 2008 存储过程

MySQL数据库架构..创建不同表通用的属性表,以便将来更容易编辑

mysql - 如果在 MySQL 的 SQL 脚本中有条件