记录用户活动 - 哪个更好

时间:2011-05-18 19:50:01

标签: sql asp.net-mvc-2 logging c#-4.0 triggers

我正在使用操作过滤器属性来记录具有SQL数据库交互的特定操作的用户活动。类似地,我可以在表的每个活动期间使用表上的触发器记录SQL表中的活动。我想知道上述哪两种方法是最佳实践(性能明智)

2 个答案:

答案 0 :(得分:1)

我认为actionfilter肯定是最干净,最好的练习appraoch,因为它位于应用程序层。存在的部分好处是它的托管代码,如果出现问题,您可以轻松找到问题所在。还有一个好处是您的所有代码也在一个位置。

数据库触发器在许多公司中都是不容忽视的,因为他们习惯会导致无限循环,不知情的程序员会创建一些逻辑,一遍又一遍地触发触发器,导致数据库失败。有些公司确实允许使用触发器,但记录很清楚且使用起来非常简单。希望这可以帮助。

答案 1 :(得分:0)

日志记录的性能在很大程度上取决于系统架构。如果有3个负载平衡的Web服务器命中一个主数据库,则触发器必须处理所有负载,而Action Filters将负载分成三个。在那种情况下,动作过滤器会更好。

就最佳做法而言,我不会使用其中任何一种方法。我会将事务复制设置到另一个SQL服务器。这种方法可以在不影响性能的情况下运行。事务日志已经生成,复制只会启动一个正在读取该日志的单独进程。