FocusBI: SQL Server內核

   關注微信公衆號:FocusBI 查看更多文章;加QQ羣:808774277 獲取學習資料和一塊兒探討問題。html

  

  《商業智能教程》pdf下載地址    數據庫

  連接:https://pan.baidu.com/s/1f9VdZUXztwylkOdFLbcmWw 密碼:2r4v緩存

 

  瞭解SQL Server 內部組件是如何運做對學習BI是很是有幫助的,它是BI數據的主要來源。服務器

       一:SQL Server 網絡接口(SNI)是一個協議層,負責創建客戶端和服務器之間的網絡鏈接。SQL Server支持的協議有: 共享內存、TCP/IP、命名管道 等,這裏我講一下 TCP 協議的三次握手和四次揮手,TCP端口默認1433,UDP端口默認1434微信

二:SQL Server 由兩個主要引擎組成:關係引擎和存儲引擎。網絡

       關係引擎有時稱爲查詢處理器,由於關係引擎的主要功能是進行查詢的優化和執行。關係引擎包含三個主要部分,命令解析器、查詢優化器和查詢執行器。命令解析器用於檢查查詢命令的語法和生成查詢樹,查詢優化器大概是任何數據庫系統中最重要的一部分,查詢執行器負責查詢命令的執行。post

       存儲引擎負責管理與數據相關的全部I/O操做,包括訪問方法和緩衝區管理器。其中,訪問方法負責處理行、索引、頁、分配和行版本的I/O請求;緩衝區管理器負責緩衝池的管理,緩衝池是SQL Server 內存的主要使用者。存儲引擎還包含了一個事物管理器,負責數據的鎖定以實現ACID(原子性、一致性、隔離性、持久性)屬性中的隔離性,並負責管理事物日誌。性能

       緩衝池是SQL Server內存最大的使用者。緩衝池中包含了SQL Server 中全部類型的緩存,包括計劃緩存和數據緩存。好比當你查詢一個關聯語句時若是它開機後沒有執行過,查詢時會消耗一點時間,若是開機後又查詢過在去查詢速度會很快,它沒有去查詢數據庫文件而是去的內存中緩存下來的數據。學習

 

三:磁盤上的數據文件和日誌文件。優化

 

這裏已一個簡單的查詢(select)和更新(update)的生命週期爲例

簡單的查詢

  1. 客戶端的SQL Server 網絡接口(SNI)經過只用網絡協議,例如TCP/IP與SQL Server服務器端的SNI創建了一個鏈接,而後經過TCP/IP鏈接和TDS端點建立一個鏈接,並經過這個鏈接向SQL Server以TDS消息的形式發送select語句。
  2. SQL Server的SNI將TDS消息解包,讀取select 語句,而後將這個SQL命令發送給命令解析器。
  3. 命令解析器在緩衝池的計劃緩存中檢查是否已經存在了一條與接收到的語句匹配且可用的查詢計劃。若是找不到命令解析器則基於select語句生成一個查詢樹,而後將查詢樹傳遞給查詢優化器,讓它生成查詢計劃。
  4. 因爲這條查詢命令比較簡單,查詢優化器僅在預優化階段就生成了「零開銷」的查詢計劃(或稱爲「普通」查詢計劃)。查詢優化器將建立出來的查詢計劃發送給查詢執行器執行。
  5. 查詢執行器在執行查詢計劃的時候,首先肯定完成這個查詢計劃須要讀取什麼數據,而後經過OLE DB 接口向存儲引擎中的訪問方法發送訪問請求。
  6. 爲了完成查詢執行器的請求,訪問方法須要從數據庫中讀取一個數據頁面,並要求緩衝區管理器提供這個數據頁面。
  7. 緩衝區管理器在數據緩存中檢查這個數據頁是否已經存在。因爲這個頁面並無在緩存中,所以緩衝區管理器首先從磁盤上獲取這個數據頁面,而後將其存入緩存,並傳回給訪問方法。
  8. 最後,訪問方法將結果集傳遞給關係引擎,由關係引擎將結果集發送給客戶端。

 

簡單的更新

       更新與查詢的前面步驟是同樣的,到了訪問方法這一步,事物管理器會將更新操做寫入日誌管理器中,只有在肯定操做已經成功寫入了事物日誌以後,纔可以執行真正的數據修改操做。因此事物日誌的性能很關鍵,一旦訪問方法接收到確認信息,就將修改數據的請求發送給緩衝區管理器,由緩衝區管理器完成修改數據的操做。

 

歷史文章:

FocusBI: SQL Server內核

FocusBI: 總線矩陣(原創)

FocusBI: 數據倉庫 (原創)

FocusBI: 商業智能場景(原創)

FocusBI: SSIS體系結構(原創)

FocusBI: 使用Python爬蟲爲BI準備數據源(原創)

FocusBI: SSIS 開發案例(原創) 

FocusBI關注者
FocusBI:SSAS體系結構(原創)
FocusBI:租房分析&星型模型
FocusBI:地產分析&雪花模型
FocusBI:MDX檢索多維模型
FocusBI:租房分析可視化(網址體驗)

FocusBI: 《DW/BI項目管理》之數據庫表結構 (原創)

FocusBI:《DW/BI項目管理》之SSIS執行狀況

相關文章
相關標籤/搜索