我在表上定义了一个触发器,每次插入、更新或删除时,该触发器都会填充另一个表。这会对整个数据库功能产生性能影响吗?还有其他触发器替代方案可以提高性能吗?
答案1
这会影响性能吗?是的。数据库将有更多工作要做,因此性能会受到影响。但这重要吗?根据触发器正在执行的操作、表结构和数据库的基本负载,最终用户可能不会注意到这种影响。如果您真的需要担心这一点,那么我建议您对有触发器和没有触发器的数据库进行性能分析,以确定成本是否太高。
至于替代方案,您没有提到您使用的是哪种数据库,有些数据库(如 Postgresql)提供的规则系统与其触发器系统实现方式不同,因此可能针对您的用例有不同的表现。同样,您必须对系统进行分析,看看哪个系统更适合您的确切需求。
根据您的使用情况和数据,另一种选择可能是用在非高峰使用时段运行的小型应用程序替换触发器以提供相同的功能。
不过我想说的是,如果一切正常,最终用户对系统性能感到满意,那么我此时不会担心触发器的影响。如果不能解决当前或预见的问题,那么为了更好的性能而追求更好的性能可能会浪费时间和资源。