请大家帮我分析这个一个问题

zonelive 2006-03-16 04:15:10
我是先执行一个proc,proc中有insert动作,这个动作会触发一个触发器,该触发器会触发另外一个触发器,大家看我的程序执行的一组时间:
2006-03-16 16:02:40.403

2006-03-16 16:02:41.280

2006-03-16 16:02:54.013

2006-03-16 16:02:54.310

2006-03-16 16:02:54.310

2006-03-16 16:02:54.420
为什么16:02:41.280到16:02:54.013中有这么长的停留时间,这段时间数据库在干嘛
...全文
105 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zonelive 2006-03-17
up
  • 打赏
  • 举报
回复
clarkchiang 2006-03-17
简单,在删除t1表中的数据时,SQLSERVER会记录日志,然后要提交删除事务,这样会根据你T1表的大小决定花费时间的大小,即你上述说的那段时间。如果你确定T1表数据不要,建议你采用TTRUNCATE语句,这样你说的情况不太会出现,建议你试试。
  • 打赏
  • 举报
回复
zonelive 2006-03-16
具体跟踪哪些项,我事件探察器跟踪过了,看不出什么,2个都差多,我显示了没条语句,内容很多,调用了很多自写的函数,事件探察器跟踪提示内容过多,无发更多的显示,比如我查看了上面我所说的那个时间段的SQL语句是些正常的语句,也可能是事件探察器提供的时间不是很正确
  • 打赏
  • 举报
回复
zjcxc 2006-03-16
凭这些信息分析不出来.

你可以用事件探察器跟踪一下, 看看具体在执行什么操作
  • 打赏
  • 举报
回复
zonelive 2006-03-16
这个没有,我有观察锁的情况,更有意思的是:
比如我有过程p_a
表:t1
有触发器tr_t1INS,tr_t1DEL
由于每次都要删除t1表中的数据,所以t1表是不会有数据存在的,也就是在这种情况下出现上面的那种事务时间很长,一般达到15s
这是一般情况下

现在如果在t1表中存放一定数量的数据,那么整个事务执行的时间是2s,测试结果一直是这样
2006-03-16 16:16:02.310

2006-03-16 16:16:03.217

2006-03-16 16:16:03.997

2006-03-16 16:16:04.293

2006-03-16 16:16:04.293

2006-03-16 16:16:04.403
过程与触发器之间就是
2006-03-16 16:16:03.217
2006-03-16 16:16:03.997
,不像上面拉开那么宽的时间距离,我一直不能找到这是什么原因,很奇怪,大家帮我分析一下
  • 打赏
  • 举报
回复
huangwei_d107 2006-03-16
顶顶 顶 顶 顶 顶顶 顶 顶 顶 顶顶 顶 顶 顶
  • 打赏
  • 举报
回复
子陌红尘 2006-03-16
每执行一组之后记录一个时间?估计是某一个事务中锁了某张表,而当前执行的事务访问该表时,锁尚未释放,于是等待,知道锁资源被释放,当前事务才能访问这张表。这中间的时间间隔就是在等待锁释放。
  • 打赏
  • 举报
回复
相关推荐
发帖
疑难问题

2.1w+

社区成员

MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
加入社区
帖子事件
创建了帖子
2006-03-16 04:15
社区公告
暂无公告