前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

我的坑:触发器的使用带来严重的DML性能问题

qiguaw 2024-11-10 10:47:58 资源文章 19 ℃ 0 评论

触发器是什么

触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。触发器主要是通过事件进行触发被自动调用执行的。而存储过程可以通过存储过程的名称被调用。

触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器一般用在check约束更加复杂的约束上面。触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作。诸如:update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。SQL Server 2005中触发器可以分为两类:DML触发器和DDL触发器,其中DDL触发器它们会影响多种数据定义语言语句而激发,这些语句有create、alter、drop语句。

好处

在数据库中,触发器可以在INSERT、UPDATE或DELETE的时候,执行一些特定的操作,以此实现一些业务逻辑,可以大大简化应用程序设计。相对于外部程序、存储过程,触发器可以更快更高效地维护数据。

弊端

  • MySQL触发器能基于行触发,MySQL触发器始终时基于表中的一条记录触发,而不是一组SQL语句。因此,如果需要变动整个数据集而数据集数据量又较大时,触发器效果会非常低。
  • 由于MySQL触发器基于行触发的特性,因此对于批量操作并不适合使用触发器
  • 使用触发器实现的业务逻辑在出现问题时很难进行定位,特别是涉及到多个触发器的情况
  • 协同开发时,写业务层代码如果不清楚数据库触发器的细节,容易搞不清到底触发了哪些触发器
  • 大量使用触发器会导致代码结构容易被打乱,阅读源码困难。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表