Database

數據庫觸發器對整體數據庫功能有性能影響嗎?

  • February 15, 2013

我在一個表上定義了一個觸發器,對於每個插入、更新或刪除,它將填充另一個表。這會對整體數據庫功能產生任何性能影響嗎?觸發器是否有其他替代品可以具有更好的性能?

會影響性能嗎?是的。數據庫將有更多工作要做,因此性能會受到影響。但這有關係嗎?根據您的觸發器正在執行的操作、您的表結構和數據庫上的基本負載,最終使用者可能不會注意到影響。如果您真的需要擔心這一點,那麼我建議在使用和不使用觸發器的情況下對數據庫進行分析,以確定其提供的成本是否太高。

至於替代方案,您沒有提及您使用的是什麼數據庫,一些數據庫(如 Postgresql)提供了一個規則係統,該規則係統的實現方式與其觸發器系統不同,觸發器系統可能對您的案例執行不同的操作。同樣,您必須對系統進行概要分析,並查看哪個性能更好地滿足您的確切需求。

根據您的案例和數據,另一種選擇可能是將觸發器替換為在非高峰使用時間執行的小型應用程序以提供相同的功能。

我想提一下,如果一切正常並且最終使用者對系統性能感到滿意,那麼我現在不會擔心觸發器的影響。如果不解決目前或可預見的問題,為了更好的性能而尋求更好的性能可能會浪費時間和資源。

引用自:https://serverfault.com/questions/479138