我有一個數據庫,包含大量的表,大約3500個,以及需要訪問表列表的應用程序。在SQL Server 2005上真的很慢模式信息查詢
在特定的服務器上,這需要超過2.5分鐘才能返回。
EXEC sp_tables @table_type="'TABLE'"
我知道有更快的方法來做到這一點,但遺憾的是我沒有修改應用程序的位置,需要找到一種方法來推動它低於約30秒,因此應用程序不會拋出超時錯誤。
所以。什麼,如果有的話,我可以做些什麼來提高SQL服務器中的sp的性能?
我有一個數據庫,包含大量的表,大約3500個,以及需要訪問表列表的應用程序。在SQL Server 2005上真的很慢模式信息查詢
在特定的服務器上,這需要超過2.5分鐘才能返回。
EXEC sp_tables @table_type="'TABLE'"
我知道有更快的方法來做到這一點,但遺憾的是我沒有修改應用程序的位置,需要找到一種方法來推動它低於約30秒,因此應用程序不會拋出超時錯誤。
所以。什麼,如果有的話,我可以做些什麼來提高SQL服務器中的sp的性能?
如果您沒有在您的用戶帳戶上設置GRANT VIEW DEFINITION
權限,我已經看到這些存儲過程運行緩慢。從我讀的內容來看,這將導致安全檢查發生速度減慢查詢。
也許一個SQL大師可以評論爲什麼,如果這有助於你的問題。
您需要像處理其他任何性能問題一樣來解決這個問題。 爲什麼速度慢?也就是說,它在哪裏阻塞?磁盤IO?中央處理器?網絡?鎖爭用?科學的方法是使用像Waits and Queues或更新的SQL 2008 equivalent Troubleshooting Performance Problems in SQL Server 2008這樣的方法。懶惰的方法是簡單地檢查執行sp_tables
調用的會話中的,wait_time
和wait_resource
列sys.dm_exec_requests
。一旦找出什麼阻止執行,您可以相應地繼續。
如果我冒險猜測,你會發現爭用的原因:其他會話鎖定表的元數據,從而阻止sp_tables的執行,它必須等到它前面的所有操作完成。
有趣的是,在帶有3200個表格的db上跑了這個,並且花了不到一秒 – SQLMenace 2010-08-24 17:28:31