使用 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/