SQL Server查询执行流程

时间:2010-01-21 15:37:13

标签: sql-server performance oltp

我正在寻找有关SQL Server如何在更精细的细节中实际处理查询执行的信息(比如缓冲区/内存中保存的数据以及即使只有一列中的更新更改,它又如何决定获取新数据?参与查询的表格等)

如果有人知道消息来源,请告诉我?


我们有一个使用sql server 2000的Web应用程序,它每隔30秒频繁读取几乎70%的表(仪表板)。与此同时,很多写作都在发生。

请告诉我有关优化上述情况的任何提示?

5 个答案:

答案 0 :(得分:1)

要回答内部的类型问题需要很多帖子,我建议你开始阅读一些白皮书/博客和一些书籍。

对于2000年,Ken Henderson的SQL Server架构将为您提供深入的内部细节,对于最新版本的SQL,他做了2005年的实际故障排除并不差,而Kalen Delaney的SQL 2008 Internals书非常好。 / p>

答案 1 :(得分:1)

没有人能够就如何解决优化问题给出答案。这需要访问您的数据库服务器。要解决您的问题,您需要大致了解数据库的工作方式,为此您需要进行一些阅读。

在线资源可以,但以下三本书是无价的。前两本书有关于SQL Server如何工作的非常详细的信息。最后一个是如何编写查询的指南,但也讨论了引擎如何查看查询。

  1. Kalen Daleney: Sql Server 2008 Internals
  2. Sql Server 2005: Practical Troubleshooting
  3. Ben Gan et al: Inside SQL Server 2008: T-SQL Querying

答案 2 :(得分:0)

您应该检查执行计划。

在执行查询之前,按Ctrl-L中的SSMS或发出SET SHOWPLAN_TEXT ON

这将为您提供有关使用哪些索引,应用的连接算法等的详细信息。

您可能还想查看统计信息:

SET STATISTICS TIME ON
SET STATISTICS IO ON

,它将为您提供有关从实际表格,缓存等中完成的读取次数以及每次查询所花费的时间(实际和CPU时间)的信息。

答案 3 :(得分:0)

关于SQL Server 2008缓冲区管理:http://msdn.microsoft.com/en-ca/library/aa337525.aspx

然后,您可以使用左侧边栏浏览其他主题的信息。

答案 4 :(得分:0)

就外部资源而言,MSDN拥有优化SQL Server 2000安装的全面资源,尤其是关于性能和可扩展性的Patterns & Practices论文。

如果您知道从哪里开始查找,请采用自下而上的方法检查SQL配置文件和查询计划,如上所述。否则,从上到下开始,了解重新编译查询所涉及的成本,如何有效地编制索引以及查询优化器如何使用统计信息。