【问题标题】:Efficiency of having multiple triggers on 1 table在 1 个表上拥有多个触发器的效率
【发布时间】:2011-02-21 23:20:30
【问题描述】:

我计划在一个表上放置 10-15 个插入触发器。每个触发器将对另一个表执行 3~ 次插入。这会对我的数据库产生不利影响吗?我认为执行所有触发器所需的速度可能有点慢。

这样做的原因是第 3 方软件为我们在数据库中记录数据。表格方案是这样的:

DateTime EquipA_Speed EquipA_Power EquipB_Speed EquipB_Power EquipC_Speed EquipC_Power

然后我们想在我们自己的数据库中规范化这些数据。我们的数据库有一个 Equipment 表和一个 SignalType 表(信号是功率、速度等)。

我的计划是为每个设备设置一个触发器,以使其更简单、更易于维护。当插入一行时,我需要为 Signal 表中的每个设备的每个信号添加一行。

SignalID   Value  EquipmentID   SignalTypeID

【问题讨论】:

  • 触发器在做什么?为什么需要它们?
  • 所以你问的是把一个刀片变成45个刀片会不会对性能有影响?我的猜测是会的
  • 我们将来自 OPC 服务器的数据记录到数据库 A。然后我们需要将该数据规范化到数据库 B。当将一行插入数据库 A 时,触发器将从数据库 A 插入数据进入数据库 B。
  • @克劳斯。我想我真正要问的是,将插入拆分成多个触发器是否会比将它们全部放在同一个触发器中要慢得多。

标签: sql sql-server triggers


【解决方案1】:

您可以轮询宽表,或使用触发器中的服务代理来通知读取该表的解耦进程。

然后您可以先在临时表或表变量中准备/粉碎数据的存储。 然后开始一个事务,做你的写,提交。

【讨论】:

    【解决方案2】:

    这完全取决于触发器的作用。触发器不会影响性能,触发器包含的逻辑将在本文的倒数第二段读取以了解更多详细信息:

    http://msdn.microsoft.com/en-gb/magazine/cc164047.aspx

    您可以做的是设置一个测试用例。需要注意的另一件事是日志文件 (.ldf) 的大小,因为它会根据插入的频率而变得非常大。

    你为什么要这样做?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-10
      • 2012-10-21
      • 1970-01-01
      • 2017-08-21
      • 1970-01-01
      • 2017-10-22
      • 2014-05-01
      相关资源
      最近更新 更多