2010-01-21 61 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配置文件和查詢計劃。否則,請從頭開始,瞭解重新編譯查詢所涉及的成本,如何有效編制索引以及查詢優化程序如何使用統計信息。