在生产数据库上添加触发器的含义

时间:2019-07-14 16:21:03

标签: sql-server triggers sql-server-2014

我正在尝试在包含数百万行且使用量很大的生产数据库表上添加触发器。每天大约有70k-100k刀片。

当我尝试向该表添加触发器时,SQL Server会花费太多时间-直到我停止执行或SQL Server抛出死锁错误为止。

我需要在生产环境中运行此触发器。如何添加对运行生产数据库影响最小的触发器?

1 个答案:

答案 0 :(得分:0)

您需要查看触发器的源代码。如果不是最佳选择,则对其进行优化。但是,如果数据库使用率很高,那么您将需要做其他事情。触发器使您的生产服务器上的工作变得非常困难,我们可以理解。但是,为减轻服务器的负担,您可以创建一个存储过程,在单个命令中进行较大批处理的插入/更新。它是以实时为代价的,但是如果对实时有一定程度的容忍度,则可以在此范围内进行。

您还需要确保索引方式对性能有所帮助。您拥有的索引越多,读取越快,而写入越慢。

所以,简而言之:

  • 优化触发器
  • 如果还不够,请分批完成

您还可以使用其他工具,例如另一个数据库,以了解应刷新的值并从中临时读取,从而通过cron作业定期刷新大数据库的状态。有时只要知道数据库中的 数据暂时就足够了,因此将实际更新推迟到可以实现的时间即可。