freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

server作為一款面向企業(yè)級(jí)應(yīng)用的關(guān)系數(shù)據(jù)庫產(chǎn)品-文庫吧

2025-06-13 08:33 本頁面


【正文】 習(xí)和理解SQL Server 2008的相關(guān)知識(shí)。 SQL Server 2008系統(tǒng)架構(gòu)SQL Server 2008功能模塊眾多,但是從總體來說可以將其分成兩大模塊:數(shù)據(jù)庫模塊和商務(wù)智能模塊。數(shù)據(jù)庫模塊除了數(shù)據(jù)庫引擎以外,還包括以數(shù)據(jù)庫引擎為核心的Service Broker、復(fù)制、全文搜索等功能組件。而商務(wù)智能模塊由集成服務(wù)(Integration Services)、分析服務(wù)(Analysis Services)和報(bào)表服務(wù)(Reporting Services)3大組件組成。 SQL Server 2008組件之間的關(guān)系從圖中可以看出,數(shù)據(jù)庫引擎是整個(gè)SQL Server 2008的核心所在,其他所有組件都與其有著密不可分的聯(lián)系。由于數(shù)據(jù)庫引擎的重要性,筆者在此就主要講解一下數(shù)據(jù)庫引擎的內(nèi)部架構(gòu)。 Server 2008的總體結(jié)構(gòu)。SQL Server數(shù)據(jù)庫引擎有4大組件:協(xié)議(Protocol)、關(guān)系引擎(Relational Engine,查詢處理器,即Query Compilation和Execution Engine)、存儲(chǔ)引擎(Storage Engine)和SQLOS。任何客戶端提交的SQL命令都要和這4個(gè)組件進(jìn)行交互。 SQL Server 2008架構(gòu)協(xié)議層接受客戶端發(fā)送的請(qǐng)求并將其轉(zhuǎn)換為關(guān)系引擎能夠識(shí)別的形式。同時(shí)它也能將查詢結(jié)果、狀態(tài)信息和錯(cuò)誤信息等從關(guān)系引擎中獲取出來,然后將這些結(jié)果轉(zhuǎn)換為客戶端能夠理解的形式返回給客戶端。關(guān)系引擎負(fù)責(zé)處理協(xié)議層傳來的SQL命令,對(duì)SQL命令進(jìn)行解析、編譯和優(yōu)化。如果關(guān)系引擎檢測(cè)到SQL命令需要數(shù)據(jù)就會(huì)向存儲(chǔ)引擎發(fā)送數(shù)據(jù)請(qǐng)求命令。存儲(chǔ)引擎在收到關(guān)系引擎的數(shù)據(jù)請(qǐng)求命令后負(fù)責(zé)數(shù)據(jù)的訪問,包括事務(wù)、鎖、文件和緩存的管理。SQLOS層則被認(rèn)為是數(shù)據(jù)庫內(nèi)部的操作系統(tǒng),它負(fù)責(zé)緩沖池和內(nèi)存管理、線程管理、死鎖檢測(cè)、同步單元和計(jì)劃調(diào)度等。 SQL Server 2008的協(xié)議當(dāng)客戶端向SQL Server發(fā)送SQL命令時(shí),客戶端發(fā)出的命令必須符合一定的通信格式規(guī)范才能被數(shù)據(jù)庫系統(tǒng)識(shí)別,而這個(gè)規(guī)范就是TDS(Tabular Data Stream)。服務(wù)器和客戶端上都有NetLibraries,它可以將TDS信息包轉(zhuǎn)換為標(biāo)準(zhǔn)的通信協(xié)議包。SQL Server可以同時(shí)支持來自不同客戶端的多種標(biāo)準(zhǔn)協(xié)議,其支持的協(xié)議有:q 共享內(nèi)存(Shared Memory)。這是SQL Server默認(rèn)開啟的一個(gè)協(xié)議。該協(xié)議簡(jiǎn)單,無須配置。顧名思義,共享內(nèi)存協(xié)議就是通過客戶端和服務(wù)端共享內(nèi)存的方式來進(jìn)行通信。所以使用該協(xié)議的客戶端必須和服務(wù)端在同一臺(tái)機(jī)器上。由于共享內(nèi)存協(xié)議簡(jiǎn)單,協(xié)議效率高而且安全,所以如果客戶端(比如IIS)和數(shù)據(jù)庫是在同一臺(tái)機(jī)器上,那么使用共享內(nèi)存協(xié)議是一個(gè)不錯(cuò)的選擇。q 命名管道(Named Pipes)。該協(xié)議是為局域網(wǎng)而開發(fā)的協(xié)議。命名管道協(xié)議和Linux下的管道符號(hào)有點(diǎn)接近,一個(gè)進(jìn)程使用一部分內(nèi)存來向另一個(gè)進(jìn)程傳遞信息,一個(gè)進(jìn)程的輸出是另一個(gè)進(jìn)程的輸入。兩個(gè)進(jìn)程可以是同一臺(tái)機(jī)器,也可以是局域網(wǎng)中的兩臺(tái)機(jī)器。q TCP/IP。該協(xié)議是因特網(wǎng)上廣為使用的協(xié)議。該協(xié)議可以用于不同硬件、不同操作系統(tǒng)、不同地域的計(jì)算機(jī)之間通信。由于TCP/IP協(xié)議沒有共享內(nèi)存協(xié)議和命名管道協(xié)議的限制,所以該協(xié)議在SQL Server上被大量使用。q 虛擬接口適配器(VIA)。該協(xié)議是一種和VIA硬件一起使用的專門化協(xié)議。相關(guān)細(xì)節(jié)需要從硬件供應(yīng)商處獲得。 SQL Server 2008的查詢查詢處理器由解析器、優(yōu)化器、SQL管理器、數(shù)據(jù)庫管理器和查詢執(zhí)行器組成。它主要負(fù)責(zé)SQL命令處理。查詢處理器是整個(gè)SQL Server中最為復(fù)雜的組件,其性能的好壞就決定了整個(gè)SQL Server數(shù)據(jù)處理能力的高低。當(dāng)一個(gè)SQL命令從協(xié)議層傳輸?shù)讲樵兲幚砥鲿r(shí),各模塊的分工如下:q 命令解析器首先接收到協(xié)議層傳來的TSQL語句。命令解析器首先對(duì)TSQL語法進(jìn)行檢查。如果解析器無法正確識(shí)別語法,則直接拋出錯(cuò)誤并標(biāo)出錯(cuò)誤的地方。在語法檢查通過后命令解析器會(huì)將SQL命令翻譯成查詢樹,并將查詢樹傳給查詢優(yōu)化器。至此命令解析器的任務(wù)結(jié)束,而源SQL命令也將不再可用。q 查詢優(yōu)化器負(fù)責(zé)查詢樹的執(zhí)行優(yōu)化并生成最終的執(zhí)行計(jì)劃。查詢優(yōu)化器從命令解析器中獲得查詢樹后,將不能優(yōu)化的控制流DDL命令等編譯成一種內(nèi)部格式,而可以優(yōu)化的DML語句(如select、insert、update和delete)將由查詢優(yōu)化器進(jìn)一步判斷最佳的處理方式。對(duì)于可優(yōu)化語句,查詢優(yōu)化器先將每個(gè)查詢進(jìn)行規(guī)范化,然后基于成本選擇成本最低的執(zhí)行計(jì)劃。執(zhí)行成本以內(nèi)存使用量、CPU使用率和I/O數(shù)量為依據(jù)。查詢優(yōu)化器會(huì)考慮語句的類型并檢查受影響的各個(gè)表的數(shù)據(jù)量,查詢每張表中可用的索引和統(tǒng)計(jì)信息來決定最優(yōu)的執(zhí)行計(jì)劃。在規(guī)范化和優(yōu)化完成后,查詢樹會(huì)被編譯成執(zhí)行計(jì)劃。執(zhí)行計(jì)劃實(shí)際上是一種數(shù)據(jù)結(jié)構(gòu),其中包含了每個(gè)命令將會(huì)影響的表,會(huì)使用的索引,進(jìn)行安全檢查和必須判斷為真的選擇條件。q SQL管理器負(fù)責(zé)管理與存儲(chǔ)過程(Storage Process,簡(jiǎn)稱SP)執(zhí)行計(jì)劃有關(guān)的一切事務(wù)。SQL管理器會(huì)判斷什么時(shí)候一個(gè)執(zhí)行計(jì)劃需要重新編譯并管理存儲(chǔ)過程緩存以便其他進(jìn)程重用這些緩存。另外,SQL管理器還負(fù)責(zé)管理查詢的參數(shù)自動(dòng)化,也就是說SQL管理器可以從某些SQL命令中提取出參數(shù),而將參數(shù)形式的SQL命令的執(zhí)行計(jì)劃緩存起來,從而提高SQL語句查詢的效率。q 數(shù)據(jù)庫管理器管理查詢編譯和查詢優(yōu)化所需的對(duì)元數(shù)據(jù)的訪問。q 查詢執(zhí)行器運(yùn)行查詢優(yōu)化器生成的執(zhí)行計(jì)劃。該模塊逐步運(yùn)行執(zhí)行計(jì)劃中的每一個(gè)命令,管理其中的事務(wù)和鎖,并將需要數(shù)據(jù)操作的執(zhí)行計(jì)劃傳入存儲(chǔ)引擎。 Server 2008的查詢流程圖。 查詢過程 SQL Server 2008的數(shù)據(jù)操作SQL Server 2008的數(shù)據(jù)操作主要由存儲(chǔ)引擎來完成。當(dāng)查詢處理器向存儲(chǔ)引擎發(fā)出數(shù)據(jù)操作請(qǐng)求時(shí),存儲(chǔ)引擎會(huì)調(diào)用存取方法的代碼向緩存管理器發(fā)出請(qǐng)求,緩存管理器負(fù)責(zé)從緩存中提供數(shù)據(jù)或者從硬盤上把數(shù)據(jù)讀取到緩存中,下次再查詢?cè)摂?shù)據(jù)時(shí)查詢處理器就可以直接從緩存中讀取數(shù)據(jù),而不需要進(jìn)行硬盤的I/O操作。由于內(nèi)存的訪問速度遠(yuǎn)遠(yuǎn)高于硬盤的訪問速度,這種緩存讀取的方式盡量減少了硬盤的讀寫操作,從而大大提高了數(shù)據(jù)處理效率。SQL Server在數(shù)據(jù)訪問中的最小單位是頁(Page)。也就是說,即使只需要查詢一個(gè)字節(jié)的數(shù)據(jù),SQL Server至少也要訪問1個(gè)頁來查找結(jié)果。每個(gè)數(shù)據(jù)庫都是由頁組成的集合。1個(gè)頁的大小是8KB,而8個(gè)連續(xù)的頁組成了1個(gè)區(qū)(Extent)。SQL Server中使用了8種類型的頁:數(shù)據(jù)頁、LOB(大數(shù)據(jù)類型)頁、索引頁、頁面自由空間頁(PFS)、全局分配圖和共享全局分配圖頁(GAM和SGAM)、索引分配圖(IAM)頁、大批量修改圖(BCM)頁和增量修改圖(DCM)頁。雖然每個(gè)頁的大小是8KB,但是SQL Server中規(guī)定表中行(不包括可變長度數(shù)據(jù)類型的列)的最大長度是8060字節(jié)。所有的用戶數(shù)據(jù)都保存在數(shù)據(jù)頁或大型數(shù)據(jù)頁上,所有的索引行都保存在索引頁上。PFS頁用來跟蹤數(shù)據(jù)庫中哪些頁是空的,可以用來記錄新數(shù)據(jù)。分配頁(GAM、SGAM和IAM)用來跟蹤其他頁面,不含任何用戶數(shù)據(jù)并且只能在內(nèi)部使用。大批量修改圖頁和增量修改圖頁用來使數(shù)據(jù)庫備份和恢復(fù)效率更高。,但是對(duì)于數(shù)據(jù)的寫入,SQL Server的處理方式有一定的不同。為了保證事務(wù)的原子性——一個(gè)事務(wù)要么全部做完,要么什么都不做,但數(shù)據(jù)庫必須要實(shí)現(xiàn)事務(wù)的回滾。如果一個(gè)事務(wù)要先修改A表然后修改B表,當(dāng)事務(wù)修改完成A表正要修改B表時(shí)系統(tǒng)發(fā)生了故障,那么該事務(wù)對(duì)A表的修改必須回滾到事務(wù)還沒有開始前A表的狀態(tài)。先寫日志技術(shù)使得事務(wù)回滾成為可能。,SQL Server是先將數(shù)據(jù)修改操作在日志文件中進(jìn)行,直到事務(wù)提交時(shí)才將對(duì)日志中的修改同步到數(shù)據(jù)文件中。若事務(wù)被回滾,只需要恢復(fù)日志文件中的修改,數(shù)據(jù)文件并未修改過。 數(shù)據(jù)讀取方式 SQL Server先寫日志技術(shù)另外,為了提高SQL Server的性能,采用了“懶寫入”(Lazy Write)技
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1