我们可以看到,在我们的perl程序运行期间,基本上连接到SQLserver以插入/删除/更新数据,下面的调用非常频繁
sp_tables @table_name='NOXXTABLE'
。我们看到,对于许多SPID来说,呼叫很多次都会发生。
在SQLserver中运行sp_tables @table_name='NOXXTABLE'
时,我们可以看到它没有返回任何行。它通常在几毫秒内完成。
但是在分析之后,当我们检查阻塞SPID的特定SQLText(sp_tables @table_name='NOXXTABLE')
的运行时间时,它在0秒到1分钟之间变化,并且在同一个SPID中非常频繁地被调用。对于许多SPID而言也是如此,这些SPID再次对sp_tables
进行了多次调用,每次调用花费了大量时间。
有没有解决方案可以解决这个问题?
答案 0 :(得分:4)
NOXXTABLE由DBD :: ODBC的ping方法使用。如果用DBD :: ODBC调用DBI的ping方法,它会执行一个表('','','NOXXTABLE','')。如果你想减少调用ping或者使用更适合你系统的其他代码覆盖DBD :: ODBC的ping方法。