成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

擦亮自己的眼睛去看SQL Server之整體介紹

數據庫 SQL Server
研究SQL Server后你會發現原來我們身邊有設計這么好的產品值得我們研究。下面簡單的從SQL Server產品結構、SQL Server數據庫引擎結構、SQL Server執行模型三方面整體介紹一下SQL Server。

也許你不需要了解SQL Server的內部機制,你照樣能完成CRUD,而且可能完成的還不錯,也許你不需要研究SQL Server的架構設計,你照樣可以根據自己參與的項目經驗設計出自己需要的架構,也許你會說不斷的需求變化已經把自己的精力耗盡,也許你會說針對項目目前的情況不需要對SQL Server有較深的了解,也許你還會說我喜歡研究某某公司某產品,也許你還會覺得SQL Server太過龐大無從下手……

但是總有些問題遲早會促使我們(以SQL Server為主要存儲數據容器的開發人員)開始踏上研究SQL Server的。比如你的數據庫隨著數據量增長性能越來越慢;再比如你的數據庫經常莫名其妙掛掉;再比如你照著網絡或者書籍上的各種清單優化和學習數據庫時,發現他們很多地方不可靠;再比如你在做sql語句優化時你會發現對很多SQL Server輸出信息不明白具體的意思…等等這些都再向你傳遞一個信息,你需要擦亮自己的眼睛去系統深入的學習SQL Server。而不是瞇著眼睛簡單了解一下。

有位朋友寫的一篇<<程序員是否需要底層知識>>,其中有句盡量去打開身邊的盒子,覺得很有道理。研究SQL Server后你會發現原來我們身邊有設計這么好的產品值得我們研究。下面簡單的從SQL Server產品結構、SQL Server數據庫引擎結構、SQL Server執行模型三方面整體介紹一下SQL Server。

一、SQL Server2008產品結構

介紹這部分的主要原因是,總能發現不少人對SQL Server產品沒有整體的了解。下面部分主要是照搬msdn,其中一部分加了自己的理解。在介紹之前有必要說下OLAP與OLTP。OLTP,聯機事務處理。這是大部分基于數據庫的項目中用到的。主要記錄系統的具體交易事務。OLAP,聯機分析處理。 這個經常是和BI密切相關,簡單理解這是BI的的核心技術之一。下面的Analysis Services、Integration Services都屬于OLAP范疇。

 

數據庫引擎是用于存儲、處理和保護數據的核心服務。數據庫引擎提供了受控訪問和快速事務處理,以滿足企業內最苛刻的數據消費應用程序的要求。數據庫引擎還提供了大量的支持以保持高可用性。這個組件可以說是SQL Server最核心最底層的部分,其他組件都依賴于數據庫引擎。

多維數據允許您設計、創建和管理包含從其他數據源(如關系數據庫)聚合的數據的多維結構,從而實現對 OLAP 的支持。當然你可以不需要使用這個組件也能實現多維數據,但是它讓你更加方便有效。

數據挖掘使您可以設計、創建和可視化數據挖掘模型。通過使用多種行業標準數據挖掘算法,可以基于其他數據源構造這些挖掘模型。通過這個組件,可以方便你從數據中得到對于企業決策有效的信息。

Integration Services 是一個生成高性能數據集成解決方案的平臺,其中包括對數據倉庫提供提取、轉換和加載 (ETL) 處理的包。

復制是一組技術,用于在數據庫間復制和分發數據和數據庫對象,然后在數據庫間進行同步操作以維持一致性。使用復制時,可以通過局域網和廣域網、撥號連接、無線連接和 Internet,將數據分發到不同位置以及分發給遠程用戶或移動用戶。可以用在master-slave的設計中。

Reporting Services 提供企業級的 Web 報表功能,從而使您可以創建從多個數據源提取數據的表,發布各種格式的表,以及集中管理安全性和訂閱。

Service Broker 幫助開發人員生成安全的可縮放數據庫應用程序。這一新的數據庫引擎技術提供了一個基于消息的通信平臺,從而使獨立的應用程序組件可作為一個工作整體來執行。Service Broker 包括可用于異步編程的基礎結構,該結構可用于單個數據庫或單個實例中的應用程序,也可用于分布式應用程序。

#p#

二、SQL Server2008數據庫引擎結構

 

很明顯數據庫引擎很復雜,很多細節需要我們花很多精力去研究。這篇文章按照標題的意思,大致介紹下:

一、協議層(Protocol Layer)

當一個應用程序與SQL Server數據庫引擎通訊時,協議層提供的應用程序編程接口利用微軟自定義的tabular data stream(TDS)package來規范通訊格式。這一層的意義在于向應用程序提供訪問SQL Server的接口。

SQL Server Network Interface(簡稱SNI)

SNI是在服務器和客戶端之間建立網絡連接的一種協議,他提供一組在數據庫引擎和SQL Server客戶端使用的API函數。SNI代替了SQL Server2000下的Net- Libraries組件和MDAC組件。主要是因為MDAC是隨著Windows一起發布的,SQL Server小組在研發SQL Server2005后期去協調Windows中的MDAC是一件頭疼的事情。所以他們決定SNI的解決方案,這意味這部分代碼隨著SQL Server一起發布。SQL Server支持共享內存(Shared memory)、TCP/IP、命名管道(Named Pipes)、虛擬接口適配器(Virtual Interface Adapter,即VIA)四種協議。一旦建立連接,SNI就會向服務器的TDS斷點創建一條安全的連接,用來進行數據的請求和返回。

表格格式數據流端點(Tabular Data Stream,簡稱TDS)

TDS是一種微軟具有自主知識產權的協議,原本是Sybase設計的。SQL Server在安裝時為其支持的四種協議各創建一個端點,如果協議被激活,那么所有用戶均可以使用這個協議。此外還有一個專門為專用管理員連接(DAC)而設置的端點。一條SQL語句則會通過TCP/IP連接以TDS消息的形式發送給SQL Server。

協議層(Protocol Layer)

一旦協議層接收到TDS包,就會在反轉和解包工作,以找到所包含的請求。協議層也負責打包結果和狀態消息,并以TDS消息的形式返回客戶端。

二、關系引擎(Relational Engine)

關系引擎又成為查詢處理器,包括用來確定某個查詢所要做的操作及進行這些操作最佳方式的SQL Server組件。同時關系引擎也負責向存儲引擎請求數據時查詢的執行,并處理返回的結果。

命令分析器(Cmd Parser)

命令分析器處理發送給SQL Server的T-SQL語言事件。它會先檢查T-SQL語法,并返回任何錯誤信息客戶端,如果語法有效,就會進一步產生執行計劃或者去查找一個已經存在的執行計劃。命令解析器通過T-SQL哈希值向位于緩沖池中的Plan Cache發出匹配要求,以檢查是否存在該執行計劃;如果不存在則把T-SQL翻譯成可以執行的內部格式,即查詢樹。

查詢優化器(Optimizer)

查詢優化器從命令解析器中獲取查詢樹,并為它的實際執行做準備。生成執行計劃的第一步是對每個查詢進行規范化,規范化的過程有可能將單個查詢分解成多個粒度合適的查詢。然后進行最優化,SQL Server的查詢優化器是基于成本的,它會選擇它認為成本在合理時間范圍內最低的執行計劃,它使用一些內部指標(內存需求、CPU利用率和I/O需求數目)作為選擇的依據。此外查詢優化器還會考慮請求語句的類型、檢查受到影響的各表的數據量、表中的索引,以及SQL Server統計數據。這部分可以說是SQLServer最智能最負責的部分。

SQL管理器

SQL管理器負責管理與存儲過程及其計劃有關的事務,并負責管理查詢的自動化參數。

數據庫管理器

數據庫管理器管理查詢編譯和查詢優化所需的對元數據的訪問。比如,對SQL語法庫的訪問。

查詢執行器(Query Executor)

查詢執行器運行查詢優化器生成的執行計劃,根據執行計劃中的步驟與存儲引擎進行交互,檢索或修改數據。

三、存儲引擎(Storage Engine)

存儲引擎包括存取方法、事務管理和緩沖區管理器。

存取方法(Access Methods)

SQL Server需要定位數據庫時,會調用存取方法代碼。它提供了一組代碼,用來創建和請求對數據頁面和索引頁面進行掃描,并且將準備好的OLE DB數據行集返回給關系引擎。存取方法并不真正進行操作,它只負責向緩沖區管理器發出請求。存取方法不僅僅如此,它還會預測哪些數據頁面索引頁面即將處理,這樣才能保證SQLServer高速處理。

事務管理器(Transaction Manager)

事務管理器包括兩個組件:日志管理器和鎖管理器。

鎖管理器負責數據的并發保護和基于特定隔離級別的管理。

日志管理器負責將事務日志提前記錄于日志文件中,從而起到保護數據的作用。訪問方法代碼請求的所有數據更改都必須記入日志中,這種方式稱為預寫日志。這是數據修改(插入、更新、刪除、分配釋放區和頁、創建刪除索引等)唯一總是寫磁盤的的操作。它記錄的是修改操作發生以后數據頁面發生的改變,因此我們很難從中發現有意義的信息。除非用些第三方的工具。

緩沖區管理器(Buffer Manager)

緩沖區管理器用來管理緩沖區內存池中數據頁面的分布。所有對數據的操作,都是先在緩沖區中操作的。然后由SQLOS中的檢查點或者是惰性寫入器同步到磁盤中。這樣能保證SQLServer更快的響應請求。操作完成后就結果返回給訪問方法。

四、緩沖池

緩沖池是SQLServer最消耗內存的部分。主要包含執行計劃緩存和數據緩存。

五、SQLOS

可以理解為是SQLServer的資源管理器,主要負責與操作系統中的一些交互操作。如:內存分配、資源調度、I/O操作、進程線程管理以及同步、閂鎖等等。這部分在此不展開,后期考慮專門寫一章。

#p#

三、SQLServer執行模型

從圖中可以看出,我這的執行模型也說的是整個SQLServer服務端在接收請求時,要發生的事情。但是和前面一樣,SQLServer很多時候很多細化過于復雜沒有辦法能用一章圖描述清楚。這個圖簡單的說明了SQLServer的執行模型。在分析這個圖前,要明確一個問題。SQLServer是基于C/S的結構的產品。這樣很明顯就分為客戶端與服務端。平時管理數據庫的MSSMS以及我們需要訪問數據庫的系統就是屬于SQLServer的客戶端,SQLServer服務端主要是由一些服務方式構成。

因為是C/S,那么客戶端的所有請求都必須傳輸到服務端,才能被執行。這樣的話就涉及的雙方通信的協議,這個協議在SQLServer2005后,就稱為SNI。包的格式就是TDS。客戶端的TDS通過SQLServer支持的協議傳輸到SQLServer服務端,服務端有一個組件叫連接監聽服務,它一直在監聽這請求端口。它負責監聽新的連接,清除失敗連接,將結果集、消息和狀態返回給客戶端。連接監聽服務會把包發送給協議層,協議層對這個包進行解包,提取里面要執行的SQL語句,交給關系引擎,關系引擎經過處理后生成執行計劃,并且執行計劃。一旦關系引擎開發執行工作計劃時,就會創建任務對象。任務對象必須關聯一個空閑工作線程。工作線程關聯到新任務后,狀態設置為初始化。當完成初始化后,工作線程就轉成為可運行。這時工作線程就準備就緒,只要有空閑的調度器就可以執行了。如果執行過程中遇到定時器等待、請求資源等待、I/O等待就會掛起移至相應的列表中。SQLServer采用了非搶占式調度。一個線程會完成這個任務的操作。不存在上下文切換,當然如果不是SQLServer的代碼則采用搶占式調度,比如擴展存儲過程。

今天分析就到此結束,文中如有描述不當的地方,歡迎指出。共同進步才是硬道理。

原文鏈接:http://www.cnblogs.com/yueyue_jwfm/archive/2011/06/22/2087044.html

【編輯推薦】

  1. 分析TOP語句放到表值函數外,效率異常低下的原因
  2. 雙TOP二分法生成分頁SQL類
  3. SQL Server數據庫中簡單的SELECT TOP
  4. 利用top構造Sql Server分頁查詢
  5. 說說Top子句對查詢計劃的影響
責任編輯:艾婧 來源: 小軍人的博客
相關推薦

2011-07-01 13:39:28

SQL ServerInsert

2011-07-01 10:18:58

SQL ServerSelect

2011-08-29 10:35:26

SQL Server

2011-07-14 09:37:53

SQL Server

2011-08-15 09:30:59

SQL Server

2010-01-13 15:20:27

三層交換機

2011-05-05 10:10:09

投影機

2011-05-24 09:39:15

投影機鏡頭保養

2011-04-22 09:33:49

投影機鏡頭投影機

2015-11-27 14:12:43

2012-04-02 19:32:11

iPhone 4

2011-03-28 10:17:39

sql server

2010-07-21 14:04:12

SQL Server引

2010-09-27 10:59:23

SQL SERVER事

2011-04-20 17:08:01

2010-09-16 13:42:55

SQL SERVER索

2010-11-08 10:57:05

SQL Server的

2009-08-06 16:44:06

2010-07-23 18:33:57

SQL Server游

2010-07-05 10:37:00

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 影音先锋中文字幕在线观看 | 免费中文字幕日韩欧美 | 国产成人综合在线 | 中国一级特黄视频 | 国产精品成人一区二区 | av黄色在线 | 99色播 | 国产精品亚洲成在人线 | 超碰高清 | 极品的亚洲 | 成人免费在线播放视频 | 日韩视频一区二区 | 国产在线二区 | 精品一二区 | 欧美日韩在线观看一区二区三区 | 99精品免费在线观看 | 亚洲一区精品在线 | 午夜影院在线视频 | 国产1区 | 日韩三级| 亚洲三级国产 | 国产高清视频在线观看播放 | 欧美精品久久久久久久久老牛影院 | 久久国产欧美日韩精品 | 国产乱码精品一区二区三区忘忧草 | 国产一区二区三区不卡av | 日韩精品一区二区三区中文字幕 | 精品国产欧美 | 91色在线| 国产精品久久久久久久久久妞妞 | 日韩欧美一级精品久久 | 国产欧美久久一区二区三区 | 91高清在线| 视频一区二区在线 | 国内自拍真实伦在线观看 | 91亚洲精 | 超碰在线播 | 精品av天堂毛片久久久借种 | 日日想夜夜操 | 伊人色综合久久天天五月婷 | 午夜免费网站 |