2

我正在寻找有关 SQL Server 如何更详细地实际处理查询执行的信息(例如缓冲区/内存中保存的数据以及即使仅涉及表的一列中的更新更改,它如何决定获取新数据在查询等)

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


我们有一个使用 sql server 2000 的 Web 应用程序,它每 30 秒会频繁读取几乎 70% 的表(仪表板)。同时发生了大量的写入。

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

4

5 回答 5

1

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

对于 2000 年,Ken Henderson 的 SQL Server Architecture 将为您提供深入的内部细节,对于最新版本的 SQL,他做了一个 2005 年的实际故障排除,这还不错,而 Kalen Delaney 的 SQL 2008 Internals 书非常好。

于 2010-01-21T15:42:23.000 回答
1

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

网上的资源还可以,但是下面三本书是无价的。前两本书非常详细地介绍了 SQL Server 的工作原理。最后一个是如何编写查询的指南,但也讨论了引擎如何查看查询。

  1. Kalen Daleney:Sql Server 2008 内部结构
  2. Sql Server 2005:实用故障排除
  3. Ben Gan等人:SQL Server 2008 内部:T-SQL 查询
于 2010-01-21T15:57:44.703 回答
0

您应该检查执行计划。

Ctrl-L在执行查询之前按SSMS或问题。SET SHOWPLAN_TEXT ON

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

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

SET STATISTICS TIME ON
SET STATISTICS IO ON

,它将为您提供有关从实际表、缓存等中进行了多少读取以及CPU每个查询花费了多少时间(实际和时间)的信息。

于 2010-01-21T15:42:03.060 回答
0

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

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

于 2010-01-21T15:49:58.360 回答
0

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

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

于 2010-01-21T15:50:59.410 回答