sql-server - sp_tables 调用花费更多时间导致阻塞

标签 sql-server database perl dbi

我们可以看到,在基本上连接到 SQLserver 以插入/删除/更新数据的 perl 程序运行期间,下面的调用非常频繁 sp_tables @table_name='NOXXTABLE'。我们看到对于许多 SPID,调用发生了很多次。

在 SQLserver 中运行 sp_tables @table_name='NOXXTABLE' 我们可以看到它没有返回任何行。它通常在几毫秒内完成。

但是在分析之后,当我们检查特定 SQLText(sp_tables @table_name='NOXXTABLE') 的运行时以查找阻塞 SPID 时,它在 0 秒到 1 分钟之间变化,并且越来越在同一个 SPID 中非常非常频繁地调用。许多 SPID 也发生同样的情况,它们再次多次调用 sp_tables,每次调用都花费大量时间。

有什么解决办法吗?

最佳答案

DBD::ODBC 的 ping 方法使用 NOXXTABLE。如果您使用 DBD::ODBC 调用 DBI 的 ping 方法,它会执行一个表('','','NOXXTABLE','')。如果你想少调用 ping less 或用其他更适合你的系统的代码覆盖 DBD::ODBC 的 ping 方法。

关于sql-server - sp_tables 调用花费更多时间导致阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3447884/

相关文章:

Perl 子程序原型(prototype)——正确的方法

不指定列列表的 SQL 复制记录;无视身份

sql - 将句子中的单词替换为另一个表中的单词

sql-server - 用于 Rails 的 SQL Server 适配器

mysql - 这两个sql语句有什么区别

string - 在 Perl 中使用裸字有哪些陷阱?

mysql - 使用带有日期字符串的 LIKE 子句进行查询

mysql - 为逗号分隔的数据集选择数据库模型

android - 我如何将 Flutter (Dart) 连接到我的 Oracle 服务器?有人试过这个吗?

sql - DBIx::Class是否进行联合?