Sql 使用触发器是否是此场景的最佳解决方案
一个大型SQL事务数据库有100多个表(而且它还会增长)。其中一个称为顺序。然后,还有另一个表WorkLoad,它派生自Order,还有许多其他关联表,其中包含所有活动订单的列表。每次创建订单记录时,如果它满足某些条件,则应立即将其插入到工作负载表中。最后,还有第三个表WorkLoad Aggregation,它显示按日期和店铺分组的聚合数据,它完全是从WorkLoad表构建的。WorkLoadAggregation还应显示实时数据,这意味着如果在WorkloadTable中插入记录,则还应更新匹配的日期/车间聚合 我的想法是通过以下触发器来处理此问题:Sql 使用触发器是否是此场景的最佳解决方案,sql,performance,stored-procedures,triggers,Sql,Performance,Stored Procedures,Triggers,一个大型SQL事务数据库有100多个表(而且它还会增长)。其中一个称为顺序。然后,还有另一个表WorkLoad,它派生自Order,还有许多其他关联表,其中包含所有活动订单的列表。每次创建订单记录时,如果它满足某些条件,则应立即将其插入到工作负载表中。最后,还有第三个表WorkLoad Aggregation,它显示按日期和店铺分组的聚合数据,它完全是从WorkLoad表构建的。WorkLoadAggregation还应显示实时数据,这意味着如果在WorkloadTable中插入记录,则还应更新
注意:在案例5)中,调用的存储过程包含一个CTE(如果有人建议使用索引视图)要提供更具体的意见有点困难,但要基于问题空间的表示。我不推荐这种解决方案,因为它很难进行有效的测试,而且我可以看到在高负载情况下这会导致问题。另外,很难量化总体影响,因为我不确定读取负载会是什么样子,以及有多少其他进程可能需要这些表中的信息
基于您对问题的描述,以及您询问NoSQL方法的事实,我认为最终的一致性不是一个很大的问题,因此我建议使用更为事件驱动的体系结构。请记住,这可能意味着对当前实现进行重大重写,但肯定会允许更好的区域分解和扩展 如果使用触发器,请注意以下提示:触发器始终是触发触发器的事务的一部分,在触发器中使用回滚或提交时,或者在触发器中有显式事务时,请小心。我的意思是,如果您决定在这个场景中使用触发器,请仔细考虑并管理好事务,这是我认为的主要提示“我可以看到这会在高负载时导致问题”-什么类型的问题?