改善数据库性能不放过每一处---调整触发器执行顺序
2010-06-09 15:13
344 查看
数据库难免都会有触发器,而一个表一个事件有多个触发器也一点不见怪.当有多个触发器时,它们依旧每个都会去执行,而且如果回滚的话,会回滚所有该事务的操作,但是这些触发器的执行顺序是无序的或者说并没有一定规律.
无规律会执行本来说来对数据是无影响的.但是却影响到速度.如果系统一个超多业务规则检测的触发器首先就执行了,而直到执行到最后一触发器,一个相当简单的触发器时,才发现此事件不可执行,之前N多的检测及要回滚的N多的事务,就让人觉得太浪费了.还是之前说的,不该浪费的一点不浪费,能利用的就要充分利用.我们有必要对触发器的执行顺序稍作调整.
在查询分析器中,可以使用sp_settriggerorder来设置单个表的最先和最后执行的触发器,虽然只能设这两个,也好过没有.语法
exec sp_settriggerorder @triggername='tg_triggername', @order='first' (or 'last' or 'none' ) ,@stmttype='insert' ( or 'update' or 'delete')
每种操作类型都必须定义一次,触发器有修改(Alter trigger)也会使之前的定义失效.
无规律会执行本来说来对数据是无影响的.但是却影响到速度.如果系统一个超多业务规则检测的触发器首先就执行了,而直到执行到最后一触发器,一个相当简单的触发器时,才发现此事件不可执行,之前N多的检测及要回滚的N多的事务,就让人觉得太浪费了.还是之前说的,不该浪费的一点不浪费,能利用的就要充分利用.我们有必要对触发器的执行顺序稍作调整.
在查询分析器中,可以使用sp_settriggerorder来设置单个表的最先和最后执行的触发器,虽然只能设这两个,也好过没有.语法
exec sp_settriggerorder @triggername='tg_triggername', @order='first' (or 'last' or 'none' ) ,@stmttype='insert' ( or 'update' or 'delete')
每种操作类型都必须定义一次,触发器有修改(Alter trigger)也会使之前的定义失效.
相关文章推荐
- 数据库中sql语句执行顺序
- JavaScript 的性能优化:加载和执行(以及动态引入的外部 JS 文件在各浏览器中的加载顺序不一致)
- 关于触发器在行级和语句级的执行顺序问题
- Oracle EBS中有关Form的触发器的执行顺序
- 改善数据库性能的几点建议
- MySQL必知必会笔记(七)安全管理 数据库维护 改善性能
- 每天将MYSQL SLOW QUERY REPORT分发到各个邮箱供分析改善数据库性能-PYTHON
- [SQL Server]调整SQL Server选项优化数据库性能(转)
- 数据库查询语句执行顺序
- 数据库执行语句性能分析
- oracle form 触发器执行顺序
- 数据库专题——SQL语句执行顺序
- SQL 入门(改善数据库性能)
- SQL 语句与性能之执行顺序
- 数据库性能调优技术─嵌套循环执行计划
- Oracle Form 触发器执行顺序
- 对oracle实例的内存(SGA和PGA)进行调整,优化数据库性能
- 关于触发器在行级和语句级的执行顺序问题
- 数据库_MySQL_复杂SQL的书写顺序与执行过程
- 关于数据库优化2——关于表的连接顺序,和where子句的前后顺序,是否会影响到sql的执行效率问题