性能 - 良好的设计:我应该使用触发器还是手动使用手柄套

时间:2017-05-05 04:18:34

标签: mysql database performance

假设我有一个表Table1,其中包含一列cardinal,可以跟踪其他一些表的COUNT()。当我删除说Table2中的一行时,我需要减少cardinal列中的相应值。

有两种解决方案:

1 - 每次删除条目后都会使用更新。

2 - 创建执行作业的触发器

考虑到性能和最佳实践,哪一个更好? 还有其他更好的解决方案吗?

上下文:我有一个表forums,可以跟踪每个论坛中的帖子数量。每次删除帖子时我都需要减少这个数字。

1 个答案:

答案 0 :(得分:1)

计划A(例如,数百万件事情需要计算):当您需要时,只需COUNT(*)

B计划:TRIGGER可行。

计划C(非常大的情况):不要实时计算;定期总结;然后SUM()汇总表以获得最后一小时(或其他)的计数。

计划D(如果C不够好):执行C,并使用A增加未计算的计数。

请记住......对于非常频繁的计数非常频繁的计数请求,执行计数的开销可能会影响系统,从而导致严重关注。