2010-01-21 66 views
2

我正在查找有关SQL Server如何在更细的细节中处理查询执行的信息(例如,哪些数据保存在缓冲区/内存中,以及它如何决定即使有更新更改也能获取新数据在查询中涉及的表中只有一列等)SQL Server查询执行流程

如果有人知道来源请让我知道?


我们使用SQL Server 2000的Web应用程序,它已经重频繁读取表(仪表盘),每30秒的近70%。与此同时,很多写道正在发生。

请让我知道以上场景优化的任何提示?

回答

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
0

您应该检查执行计划。

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

这会给你使用何种指标的详细信息,这些信息加入应用算法等

你也可以看到统计:

SET STATISTICS TIME ON 
SET STATISTICS IO ON 

,这将在所提供的信息从实际表格,缓存等中读取了多少个读取,以及每个查询所花费的时间(实际和CPU时间)。

1

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

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

0

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

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