我正在寻找有关 SQL Server 如何更详细地实际处理查询执行的信息(例如缓冲区/内存中保存的数据以及即使仅涉及表的一列中的更新更改,它如何决定获取新数据在查询等)
如果有人知道来源,请告诉我?
我们有一个使用 sql server 2000 的 Web 应用程序,它每 30 秒会频繁读取几乎 70% 的表(仪表板)。同时发生了大量的写入。
请让我知道优化上述场景的任何提示?
我正在寻找有关 SQL Server 如何更详细地实际处理查询执行的信息(例如缓冲区/内存中保存的数据以及即使仅涉及表的一列中的更新更改,它如何决定获取新数据在查询等)
如果有人知道来源,请告诉我?
我们有一个使用 sql server 2000 的 Web 应用程序,它每 30 秒会频繁读取几乎 70% 的表(仪表板)。同时发生了大量的写入。
请让我知道优化上述场景的任何提示?
回答内部的类型问题需要很多帖子,我建议你开始阅读一些白皮书/博客和一些书籍。
对于 2000 年,Ken Henderson 的 SQL Server Architecture 将为您提供深入的内部细节,对于最新版本的 SQL,他做了一个 2005 年的实际故障排除,这还不错,而 Kalen Delaney 的 SQL 2008 Internals 书非常好。
没有人能够就如何解决优化问题给您答案。这需要访问您的数据库服务器。要解决您的问题,您需要大致了解数据库的工作原理,为此您需要做一些阅读。
网上的资源还可以,但是下面三本书是无价的。前两本书非常详细地介绍了 SQL Server 的工作原理。最后一个是如何编写查询的指南,但也讨论了引擎如何查看查询。
您应该检查执行计划。
Ctrl-L
在执行查询之前按SSMS
或问题。SET SHOWPLAN_TEXT ON
这将为您提供有关使用哪些索引、应用了哪些连接算法等的详细信息。
您可能还想查看统计信息:
SET STATISTICS TIME ON
SET STATISTICS IO ON
,它将为您提供有关从实际表、缓存等中进行了多少读取以及CPU
每个查询花费了多少时间(实际和时间)的信息。
关于 SQL Server 2008 缓冲区管理:http: //msdn.microsoft.com/en-ca/library/aa337525.aspx
然后您可以使用左侧边栏浏览其他主题的信息。
就外部资源而言,MSDN拥有关于优化 SQL Server 2000 安装的综合资源,尤其是关于性能和可伸缩性的Patterns & Practices论文。
如果您知道从哪里开始查找,请采用自下而上的方法来检查 SQL 配置文件和查询计划,如前所述。否则,从自上而下开始,了解重新编译查询所涉及的成本、如何有效地建立索引以及查询优化器如何使用统计信息。