维护MySQL中的派生数据:触发器与定期作业

时间:2011-11-09 06:12:09

标签: mysql triggers

Guy Harrison在“触发器”一章中的“MySQL存储过程编程”中说触发器是维护摘要表的方法。

此处示例中的摘要表是一个存储客户总销售额的表。此数据来自记录单个交易的“销售”表。该示例使用'sales'表上的BEFORE INSERT,BEFORE UPDATE和BEFORE DELETE触发器来保持'customer_sales_totals'表同步。 BEFORE INSERT触发器在'customer_sales_totals'表上执行select,并在那里插入一行或更新现有行。

现在,让我们假设:

  • 每天在“销售”表格中插入数十/数十万条记录;
  • 如果'customer_sales_totals'永远不会过时几分钟就足够了;
  • 每个客户都有很多销售(销售数量远大于客户数量)。

在这种情况下,定期的低优先级工作而不是触发器是维护'customer_sales_totals'的更有效方式吗?

由于 Tymek

1 个答案:

答案 0 :(得分:0)

我个人赞成定期工作选项以便维护。代码位于一个地方,可以更容易记录,并且可以更轻松地执行测试。 现在,我知道触发器有他们的粉丝,它肯定更微妙,虽然在我看来它会导致代码分裂太多。在真正的日常工作生活中,这意味着您需要专家来查看它,因此在组织您的员工时灵活性较差,并且在您遇到错误时更容易受到伤害。