我们可以看到,在我们的perl程序运行期间,基本上连接到SQLserver以插入/删除/更新数据,下面非常频繁地调用 sp_tables @table_name='NOXXTABLE'
。我们看到,对于许多SPID来说,这个呼叫发生了很多次。sp_tables调用需要更多时间导致阻塞
在SQLserver上运行sp_tables @table_name='NOXXTABLE'
我们可以看到它没有返回任何行。它通常以毫秒为单位完成。
但是在分析后,当我们检查阻塞SPID的特定SQLText(sp_tables @table_name='NOXXTABLE')
的运行时间时,它在0秒到1分钟之间变化,并且在相同的SPID内被非常频繁地调用。许多SPID也是如此,它们每次都需要花费很多时间再次调用sp_tables
。
有没有解决方案可以解决这个问题?
谢谢bohica! 在这种情况下,从哪里ping完成,为什么? 在此点燃一些光。 我们在两次选择之间也看到了sp_tables调用。 那么这里我们怎么称呼它少了几次? 表('','','NOXXTABLE','')是否知道数据库连接是否还活着? ,因为没有任何名为NOXXTABLE并且没有结果返回。 – 2010-08-11 13:39:08
我不能告诉你你的代码(或你使用的代码)在哪里调用ping。我告诉你的是,当调用DBI ping方法并且使用DBD :: ODBC时,它通过在表NOXXTABLE上发出表呼叫来实现ping。争论是这将需要往返数据库。 – bohica 2010-08-11 14:22:50