Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLServer2005上非常慢的架构信息查询_Sql_Sql Server 2005 - Fatal编程技术网

SQLServer2005上非常慢的架构信息查询

SQLServer2005上非常慢的架构信息查询,sql,sql-server-2005,Sql,Sql Server 2005,我有一个包含大量表的数据库,大约3500个,还有一个需要访问表列表的应用程序 在特定的服务器上,这需要2.5分钟才能返回 EXEC sp_tables @table_type="'TABLE'" 我知道有更快的方法可以做到这一点,但遗憾的是,我无法修改应用程序,需要找到一种方法将其推到30秒以下,以便应用程序不会抛出超时错误 所以。如果需要,我可以做些什么来提高sql server中此sp的性能?我看到,如果您的用户帐户上未设置授予视图定义权限,则这些存储过程运行缓慢。据我所知,这将导致进行安

我有一个包含大量表的数据库,大约3500个,还有一个需要访问表列表的应用程序

在特定的服务器上,这需要2.5分钟才能返回

EXEC sp_tables @table_type="'TABLE'"
我知道有更快的方法可以做到这一点,但遗憾的是,我无法修改应用程序,需要找到一种方法将其推到30秒以下,以便应用程序不会抛出超时错误


所以。如果需要,我可以做些什么来提高sql server中此sp的性能?

我看到,如果您的用户帐户上未设置
授予视图定义
权限,则这些存储过程运行缓慢。据我所知,这将导致进行安全检查,从而减慢查询速度


如果这确实有助于解决您的问题,也许SQL专家可以解释原因。

那么,sp_表是系统代码,不能更改(可以在SQL Server 2000中解决,而不是SQL Server 2005+)

你的选择是

  • 更改SQL
  • 更改命令超时
  • 更大的服务器

  • 您已经对显而易见的解决方案说了“不”…

    您需要像处理任何其他性能问题一样处理这个问题。为什么慢?也就是说,它在哪里阻塞?磁盘IO?中央处理器?网络?锁争用?科学的方法是使用一种方法,比如,或其更新的方法。惰性方法是简单地检查执行
    sp\u tables
    调用的会话中的
    wait\u type
    wait\u time
    wait\u resource
    列。一旦发现是什么阻碍了执行,就可以相应地继续


    如果我大胆猜测,您会发现争用是原因:其他会话以独占方式锁定表的元数据,从而阻止sp_表的执行,而sp_表必须等待前面的所有操作完成。

    有趣的是,在包含3200个表的db上运行此操作,花费的时间不到一个小时second@Brian:对不起,你别无选择,只能忍受缓慢的性能。。。如果你的应用程序锁定得很慢,那么你的应用程序就有更大的问题。