我正在寻找有关SQL Server如何在更精细的细节中实际处理查询执行的信息(比如缓冲区/内存中保存的数据以及即使只有一列中的更新更改,它又如何决定获取新数据?参与查询的表格等)
如果有人知道消息来源,请告诉我?
我们有一个使用sql server 2000的Web应用程序,它每隔30秒频繁读取几乎70%的表(仪表板)。与此同时,很多写作都在发生。
请告诉我有关优化上述情况的任何提示?
答案 0 :(得分:1)
要回答内部的类型问题需要很多帖子,我建议你开始阅读一些白皮书/博客和一些书籍。
对于2000年,Ken Henderson的SQL Server架构将为您提供深入的内部细节,对于最新版本的SQL,他做了2005年的实际故障排除并不差,而Kalen Delaney的SQL 2008 Internals书非常好。 / p>
答案 1 :(得分:1)
没有人能够就如何解决优化问题给出答案。这需要访问您的数据库服务器。要解决您的问题,您需要大致了解数据库的工作方式,为此您需要进行一些阅读。
在线资源可以,但以下三本书是无价的。前两本书有关于SQL Server如何工作的非常详细的信息。最后一个是如何编写查询的指南,但也讨论了引擎如何查看查询。
答案 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配置文件和查询计划,如上所述。否则,从上到下开始,了解重新编译查询所涉及的成本,如何有效地编制索引以及查询优化器如何使用统计信息。