第1周 SQL Server 如何執行乙個查詢

2021-09-06 22:52:53 字數 1807 閱讀 9037

原文:

第1周 sql server 如何執行乙個查詢

。在我們進入sql server效能調優裡枯燥難懂的細節內容之前,我想通過講解sql server如何執行乙個查詢來建立基礎。這個部分非常重要,因為接下來的培訓中我們會以這些概念來加深我們對sql server的認識。

當我們執行乙個查詢時,在sql server中最重要的元件有哪些,下面這張可以給大家乙個概觀的認識。

可以看到,sql server內部分成了2個部分:關係引擎儲存引擎。關係引擎中最大的乙個元件是查詢優化器。查詢優化器唯一和僅有的任務是把我們傳入的查詢語句生成實際的執行計畫。

我們提交給sql server 的查詢,通過協議層傳給命令分析器。命令分析器會檢查我們是否提供了乙個語法正確的語句,我們所提到的表和列在資料庫裡是否存在。命令分析器會生成可以重現我們查詢的查詢樹。查詢樹會被查詢優化器用來生成執行計畫。

然後編譯後的執行計畫會提交給查詢執行器。查詢執行器的任務是執行執行計畫。但是為了以後的重用,首先它會把編譯好的執行計畫放在執行計畫快取區進行快取。在sql server 中計畫快取是個強大同時又是乙個非常危險的概念。我們會在第10周討論計畫快取的時學到更多的細節。

執行計畫被快取後,查詢執行器與儲存引擎進行互動,並在執行計畫裡執行每個操作。當我們在執行計畫裡訪問資料時,訪問方法會向緩衝區管理器讀取我們想要指定頁。下週我們將討論sql server中頁的更多細節。現在你只要知道頁是8kb的快取,在那裡存放著我們的表和索引資料。緩衝管理器管理著緩衝池(緩衝池包含執行計畫快取區和資料快取區),那裡存放著我們8kb大小的頁。緩衝池是sql server的主要記憶體消耗,它的大小我們可以通過伺服器屬性->記憶體->最小、最大伺服器記憶體(mb)來配置。

當請求的頁面已經被存在緩衝池時,頁會被立即讀取。在sql server裡這個被稱為邏輯讀。如果請求的頁沒存在緩衝池,緩衝區管理器會發起非同步i/o操作把請求的頁從我們的儲存子系統中讀到緩衝池,這個被稱為物理讀。在非同步i/o操作期間,我們的查詢需要一直等到操作結束才繼續。在第22周我們會討論等待等待統計的更多細節。

一旦頁被讀取到緩衝池,頁會被請求的訪問方法取走。當執行計畫執行完成後,產生的資料會通過協議層返回給提交查詢的程式。

當我們與使用修改資料的tsql語句(insert,update,delete,merge)打交道時,儲存引擎同樣與事務管理器進行互動。事務管理器把執行事務中描述我們所做的改變通過事務日誌寫到事務檔案。當這些日誌記錄寫好後,事務就可以提交了。事務執行有多快,你的資料修改就有多快。

在記憶體中被修改的頁通過稱為檢查點過程寫回儲存子系統。預設情況下,檢查點每一分鐘從緩衝區管理器請求所有的髒頁並執行一次。髒頁就是在記憶體裡被修改,但還沒有寫回儲存的。一旦髒頁被寫回儲存,這個頁就會被標記為乾淨頁。

上面提到的各個元件如果出現問題,都會觸發sql server的效能問題,這些問題最後都要靠你來解決。下週我們見到的時候,將一起討論下sql server中的

第1周 SQL Server 如何執行乙個查詢

原文 第1周 sql server 如何執行乙個查詢 在我們進入sql server效能調優裡枯燥難懂的細節內容之前,我想通過講解sql server如何執行乙個查詢來建立基礎。這個部分非常重要,因為接下來的培訓中我們會以這些概念來加深我們對sql server的認識。當我們執行乙個查詢時,在sql...

開學第1周

系廣雅過左乙個星期蔦.沒有一點不適應哦?哈哈哈是不是廣雅太好蔦.比我想象中還要free.課室雖然很小但是很舒服,老師素質也比較高.起碼講課不會讓人很想睡覺.某妹仔除外.特那個討厭 尤其那個政治老師特有激情 哈哈 還有我可愛的同位.juejue,上課狂做筆記.我撩她說話都不理我.認真程度5粒星.悶死我...

第1周作業

學習內容總結 通過這次作業學習,我懂得了要想真正的獲得知識,光靠書本上的東西是不夠的,很多知識是需要自己去不斷地去摸索。比如,git的安裝和使用。只有在自己去探索的過程中才能學到經驗,獲得知識。在完成pta題庫中的c語言基礎作業,我深刻發現自己的熟練程度並不高,這就需要以後的不斷練習來提高自己。遇到...