




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 內(nèi)部資料XXXX企業(yè)注意保密數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)方案模板編織單位:新疆天擇數(shù)碼科技有限責(zé)任公司編制日期:二0一0年三月目錄TOC o 1-5 h z HYPERLINK l bookmark2 第1章項(xiàng)目前言5第2章項(xiàng)目概述和需求分析62.1項(xiàng)目概述62.2需求分析6 HYPERLINK l bookmark4 第3章數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)7 HYPERLINK l bookmark6 3.1MicrosoftSQLServer7 HYPERLINK l bookmark8 SQLServer概述7 HYPERLINK l bookmark10 數(shù)據(jù)庫(kù)高可用性解決方案9 HYPERLINK l bookm
2、ark12 SQLServer的故障轉(zhuǎn)移群集10 HYPERLINK l bookmark14 SQLServerN路集群12 HYPERLINK l bookmark16 SQLServer日志傳送14 HYPERLINK l bookmark18 SQLServer復(fù)制14 HYPERLINK l bookmark20 SQLServer2005數(shù)據(jù)庫(kù)鏡像15高可用性解決方案的綜合對(duì)比18 HYPERLINK l bookmark22 3.1.3升級(jí)到SQLServer的10大理由19 HYPERLINK l bookmark24 數(shù)據(jù)分區(qū)19 HYPERLINK l bookmark26
3、 可編程性20 HYPERLINK l bookmark28 T-SQL語(yǔ)言增強(qiáng)21 HYPERLINK l bookmark30 安全21 HYPERLINK l bookmark32 快照隔離22 HYPERLINK l bookmark34 數(shù)據(jù)庫(kù)鏡像23 HYPERLINK l bookmark36 全文搜索增強(qiáng)24可用性功能增強(qiáng)24 HYPERLINK l bookmark38 復(fù)制增強(qiáng)25 HYPERLINK l bookmark40 0異步處理能力26 HYPERLINK l bookmark42 3.1.4數(shù)據(jù)遷移到SQL數(shù)據(jù)庫(kù)26 HYPERLINK l bookmark44
4、 Server企業(yè)管理器26 HYPERLINK l bookmark46 數(shù)據(jù)轉(zhuǎn)換服務(wù)(DTS)27 HYPERLINK l bookmark48 SQLSERVER查詢分析器(ServerQueryAnalyzer)27 HYPERLINK l bookmark50 SQLServer輪廓(ServerProfiler)27 HYPERLINK l bookmark52 Oracle數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)28 HYPERLINK l bookmark54 Oracle群集RAC概述28 HYPERLINK l bookmark56 OracleRAC規(guī)劃設(shè)計(jì)31群集軟件31網(wǎng)絡(luò)31存儲(chǔ)31RAC技
5、術(shù)實(shí)施32 HYPERLINK l bookmark58 系統(tǒng)實(shí)施后的優(yōu)化工作33優(yōu)化原則33回滾段的優(yōu)化33重作日志的優(yōu)化34 HYPERLINK l bookmark60 SGA內(nèi)存的優(yōu)化35數(shù)據(jù)塊塊大小的優(yōu)化35資源競(jìng)爭(zhēng)問(wèn)題優(yōu)化36其他一些常用優(yōu)化設(shè)計(jì)38 HYPERLINK l bookmark62 RAC群集功能測(cè)試39 HYPERLINK l bookmark64 測(cè)試名詞39 HYPERLINK l bookmark66 配置實(shí)例40 HYPERLINK l bookmark68 測(cè)試系統(tǒng)拓?fù)?4測(cè)試方法44 HYPERLINK l bookmark70 Sybase數(shù)據(jù)庫(kù)高可用
6、性設(shè)計(jì)45 HYPERLINK l bookmark72 系統(tǒng)高可用性方案45群集高可用性方案45高可用性方案存在的問(wèn)題46 HYPERLINK l bookmark74 Sybase群集災(zāi)難備份方案48高可用性災(zāi)難備份方案及其主要組成部分48數(shù)據(jù)庫(kù)自動(dòng)復(fù)制系統(tǒng)50客戶端自動(dòng)切換系統(tǒng)53系統(tǒng)的自動(dòng)切換過(guò)程55 HYPERLINK l bookmark78 3.3.3SYBASE群集災(zāi)難備份方案的特點(diǎn)563.4數(shù)據(jù)庫(kù)系統(tǒng)主機(jī)硬件設(shè)計(jì)57 HYPERLINK l bookmark80 3.4.1需求分析57 HYPERLINK l bookmark82 3.4.2選型原則59 HYPERLINK
7、l bookmark84 3.4.3選型要求593.4.4硬件選型61第1章項(xiàng)目前言第2章項(xiàng)目概述和需求分析2.1項(xiàng)目概述2.2需求分析第3章數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)3.1MicrosoftSQLServer3.1.1SQLServer概述SQLServer數(shù)據(jù)平臺(tái)是一個(gè)全面的、集成的、端到端的數(shù)據(jù)解決方案,它為企業(yè)中的用戶提供了一個(gè)安全、可靠和高效的平臺(tái)用于企業(yè)數(shù)據(jù)管理和商業(yè)智能應(yīng)用。SQLServer為IT專家和信息共作者帶來(lái)了強(qiáng)大的、熟悉的工具,同時(shí)減少了在從移動(dòng)設(shè)備到企業(yè)數(shù)據(jù)系統(tǒng)的多平臺(tái)上創(chuàng)建、部署、管理及使用企業(yè)數(shù)據(jù)和分析應(yīng)用程序的復(fù)雜度。通過(guò)全面的功能集、和現(xiàn)有系統(tǒng)的集成性、以及對(duì)日常任務(wù)的
8、自動(dòng)化管理能力,SQLServer為不同規(guī)模的企業(yè)提供了一個(gè)完整的數(shù)據(jù)解決方案。圖1SQLServer數(shù)據(jù)平臺(tái)anagememToo_sSQLServer數(shù)據(jù)平臺(tái)包括以下工具:關(guān)系型數(shù)據(jù)庫(kù):安全、可靠、可伸縮、高可用的關(guān)系型數(shù)據(jù)庫(kù)引擎,提升了性能且支持結(jié)構(gòu)化和非結(jié)構(gòu)化(XML)數(shù)據(jù)。復(fù)制服務(wù):數(shù)據(jù)復(fù)制可用于數(shù)據(jù)分發(fā)、處理移動(dòng)數(shù)據(jù)應(yīng)用、系統(tǒng)高可用、企業(yè)報(bào)表解決方案的后備數(shù)據(jù)可伸縮存儲(chǔ)、與異構(gòu)系統(tǒng)的集成等,包括已有的Oracle數(shù)據(jù)庫(kù)等。通知服務(wù):用于開發(fā)、部署可伸縮應(yīng)用程序的先進(jìn)的通知服務(wù)能夠向不同的連接和移動(dòng)設(shè)備發(fā)布個(gè)性化、及時(shí)的信息更新。集成服務(wù):可以支持?jǐn)?shù)據(jù)倉(cāng)庫(kù)和企業(yè)范圍內(nèi)數(shù)據(jù)集成的抽取、
9、轉(zhuǎn)換和裝載能力。分析服務(wù):聯(lián)機(jī)分析處理(OLAP)功能可用于多維存儲(chǔ)的大量、復(fù)雜的數(shù)據(jù)集的快速高級(jí)分析。報(bào)表服務(wù):全面的報(bào)表解決方案,可創(chuàng)建、管理和發(fā)布傳統(tǒng)的、可打印的報(bào)表和交互的、基于Web的報(bào)表。管理工具:SQLServer包含的集成管理工具可用于高級(jí)數(shù)據(jù)庫(kù)管理和調(diào)諧,它也和其他微軟工具,如MOM和SMS緊密集成在一起。標(biāo)準(zhǔn)數(shù)據(jù)訪問(wèn)協(xié)議大大減少了SQLServer和現(xiàn)有系統(tǒng)間數(shù)據(jù)集成所花的時(shí)間。此外,構(gòu)建于SQLServer內(nèi)的內(nèi)嵌Webservice支持確保了和其他應(yīng)用及平臺(tái)的互操作能力。開發(fā)工具:SQLServer為數(shù)據(jù)庫(kù)引擎、數(shù)據(jù)抽取、轉(zhuǎn)換和裝載(ETL)、數(shù)據(jù)挖掘、OLAP和報(bào)表提
10、供了和MicrosoftVisualStudio相集成的開發(fā)工具,以實(shí)現(xiàn)端到端的應(yīng)用程序開發(fā)能力。SQLServer中每個(gè)主要的子系統(tǒng)都有自己的對(duì)象模型和API,能夠以任何方式將數(shù)據(jù)系統(tǒng)擴(kuò)展到不同的商業(yè)環(huán)境中。SQLServer數(shù)據(jù)平臺(tái)為不同規(guī)模的組織提供了以下好處:充分利用數(shù)據(jù)資產(chǎn):除了為業(yè)務(wù)線和分析應(yīng)用程序提供一個(gè)安全可靠的數(shù)據(jù)庫(kù)之外,SQLServer也使用戶能夠通過(guò)嵌入的功能,如報(bào)表、分析和數(shù)據(jù)挖掘等從他們的數(shù)據(jù)中得到更多的價(jià)值。提高生產(chǎn)力:通過(guò)全面的商業(yè)智能功能,和熟悉的微軟Office系統(tǒng)之類的工具集成,SQLServer為組織內(nèi)信息工作者提供了關(guān)鍵的、及時(shí)的商業(yè)信息以滿足他們特定
11、的需求。SQLServer目標(biāo)是將商業(yè)智能擴(kuò)展到組織內(nèi)的所有用戶,并且最終允許組織內(nèi)所有級(jí)別的用戶能夠基于他們最有價(jià)值的資產(chǎn)數(shù)據(jù)來(lái)做出更好的決策。減少IT復(fù)雜度:SQLServer簡(jiǎn)化了開發(fā)、部署和管理業(yè)務(wù)線和分析應(yīng)用程序的復(fù)雜度,它為開發(fā)人員提供了一個(gè)靈活的開發(fā)環(huán)境,為數(shù)據(jù)庫(kù)管理人員提供了集成的自動(dòng)管理工具。更低的總體擁有成本(TCO):對(duì)產(chǎn)品易用性和部署上的關(guān)注以及集成的工具提供了工業(yè)上最低的規(guī)劃、實(shí)現(xiàn)和維護(hù)成本,使數(shù)據(jù)庫(kù)投資能快速得到回報(bào)。3.1.2數(shù)據(jù)庫(kù)高可用性解決方案在高可用性環(huán)境中的主要技術(shù)考慮就是針對(duì)服務(wù)器故障提供保護(hù)。服務(wù)器故障可以定義為一個(gè)計(jì)劃外事件,會(huì)導(dǎo)致用戶無(wú)法訪問(wèn)服務(wù)器
12、系統(tǒng)。一系列不同的因素都可能導(dǎo)致服務(wù)器故障。各種不同的硬件和軟件原因都可能導(dǎo)致服務(wù)器故障,包括:硬件故障(CPU、RAM、存儲(chǔ)設(shè)備、I/O或電源)操作系統(tǒng)或設(shè)備驅(qū)動(dòng)程序故障數(shù)據(jù)庫(kù)服務(wù)器故障針對(duì)硬件故障提供保護(hù)的第一步就是投資購(gòu)置提供關(guān)鍵組件冗余的硬件平臺(tái)。例如,目前主要硬件供應(yīng)商提供的大部分服務(wù)器都提供高可用性功能,如冗余電源,內(nèi)置不間斷電源(UPS)以及可以熱切換的RAM和RAID驅(qū)動(dòng)器。在軟件方面,確保高可用性的最重要步驟就是使用最新的服務(wù)包使操作系統(tǒng)、設(shè)備驅(qū)動(dòng)程序和應(yīng)用程序軟件保持為最新。這確保您的系統(tǒng)將具有最新的軟件更新和安全更新。Microsoft提供了大量處理系統(tǒng)更新問(wèn)題的技術(shù)。S
13、ystemManagementServer(SMS)產(chǎn)品可提供企業(yè)級(jí)的軟件更新和目錄功能。對(duì)于中型企業(yè),新的WindowsServerUpdateServices(WSUS)可提供在組中分發(fā)MicrosoftWindows和MicrosoftWindowsServer更新的功能。而WindowsUpdate可為小型企業(yè)提供系統(tǒng)更新。保持最新的修補(bǔ)程序是非常重要的步驟,還需要具有適當(dāng)?shù)馁|(zhì)量保證過(guò)程,以將軟件更新部署到生產(chǎn)環(huán)境中之前在測(cè)試環(huán)境中嚴(yán)格對(duì)所有軟件更新進(jìn)行測(cè)試。處理這些基本的系統(tǒng)必備是提高數(shù)據(jù)庫(kù)和服務(wù)器可用性非常重要的步驟,不過(guò)這措施本身并不能確保帶來(lái)高可用性。為了進(jìn)一步提供針對(duì)服務(wù)器故
14、障的保護(hù)和確保高數(shù)據(jù)庫(kù)可用性,需要采用由各個(gè)競(jìng)爭(zhēng)數(shù)據(jù)庫(kù)平臺(tái)支持的某項(xiàng)高可用性技術(shù)。這些技術(shù)設(shè)計(jì)用于幫助系統(tǒng)更好地應(yīng)對(duì)系統(tǒng)故障,并能在出現(xiàn)服務(wù)器故障時(shí)更快地進(jìn)行恢復(fù)。充分利用集群技術(shù)和日志傳送是創(chuàng)建高可用性數(shù)據(jù)庫(kù)平臺(tái)的重要技術(shù)手段。集群技術(shù)主要涉及到在這樣一種環(huán)境中使用多臺(tái)服務(wù)器,即一臺(tái)或多臺(tái)備份服務(wù)器可以無(wú)縫地接替出現(xiàn)故障的主服務(wù)器的工作負(fù)載。除了集群技術(shù)之外,目前的競(jìng)爭(zhēng)企業(yè)數(shù)據(jù)庫(kù)平臺(tái)都支持大量的其他針對(duì)服務(wù)器故障提供保護(hù)的技術(shù)。其中包括日志傳送和復(fù)制技術(shù)。本節(jié)將對(duì)每種備選技術(shù)進(jìn)行分析,并討論每個(gè)企業(yè)數(shù)據(jù)庫(kù)產(chǎn)品是如何實(shí)現(xiàn)這些技術(shù)的。SQLServer的故障轉(zhuǎn)移群集SQLServer中的故障轉(zhuǎn)移
15、群集化建立在Windows操作系統(tǒng)的群集服務(wù)之上,依賴群集服務(wù)來(lái)提供對(duì)共享磁盤陣列系統(tǒng)的受控制訪問(wèn)(SQLServer將其數(shù)據(jù)和日志文件存儲(chǔ)在該系統(tǒng)上)。SQLServer支持零共享群集模型,其中每個(gè)節(jié)點(diǎn)管理其自己的資源和提供非共享數(shù)據(jù)服務(wù)。一旦發(fā)生節(jié)點(diǎn)故障,一個(gè)節(jié)點(diǎn)的磁盤和服務(wù)就可以故障轉(zhuǎn)移到一個(gè)幸存的節(jié)點(diǎn),但是在任一給定的瞬間,僅有一個(gè)節(jié)點(diǎn)在管理某一組磁盤和服務(wù)。MSCSHeartbeatonPrivateNetworkConnection圖2零共享群集模型:?.riri.j.i.ri總它咒St-rc_S”卍聲Sl-rcyeSQLServer中的故障轉(zhuǎn)移群集化可主動(dòng)和主動(dòng)到被動(dòng)。Share
16、d在“主動(dòng)到主動(dòng)”配置中,群集中的每個(gè)節(jié)點(diǎn)均擁有其自己的SQL以配置為兩種模型:主動(dòng)到Server實(shí)例(進(jìn)程),該實(shí)例由群集服務(wù)進(jìn)行管理。所有的實(shí)例均可以為前端服務(wù)器所用,且每個(gè)實(shí)例負(fù)責(zé)其自己的數(shù)據(jù)集。一旦發(fā)生故障轉(zhuǎn)移,一個(gè)幸存的節(jié)點(diǎn)就接管和啟動(dòng)當(dāng)初由發(fā)生故障的節(jié)點(diǎn)擁有的服務(wù)資源和數(shù)據(jù)。每個(gè)服務(wù)器均擁有一個(gè)分開的主數(shù)據(jù)庫(kù)(master.dat)和一組用戶數(shù)據(jù)庫(kù)。在“主動(dòng)到被動(dòng)”配置中,群集運(yùn)行SQLServer的單獨(dú)一個(gè)實(shí)例該實(shí)例由群集服務(wù)進(jìn)行管理。在任一個(gè)時(shí)間,均僅有一個(gè)節(jié)點(diǎn)在積極地對(duì)客戶機(jī)請(qǐng)求作出響應(yīng)。如果活躍節(jié)點(diǎn)發(fā)生故障,則群集中的另一備用(被動(dòng))節(jié)點(diǎn)可以運(yùn)行同一SQLServer實(shí)例(
17、該實(shí)例由備用節(jié)點(diǎn)中的群集服務(wù)初始)并開始提供當(dāng)初由發(fā)生故障的節(jié)點(diǎn)擁有的整套數(shù)據(jù)的服務(wù)。在該配置中,兩個(gè)服務(wù)器共享一個(gè)主數(shù)據(jù)庫(kù)和同一組用戶數(shù)據(jù)庫(kù)。設(shè)計(jì)時(shí)要考慮的因素:我們決定將我們的數(shù)據(jù)庫(kù)群集配置為較為簡(jiǎn)單的主動(dòng)到被動(dòng)的配置形式,因?yàn)檫@允許通過(guò)故障轉(zhuǎn)移群集化提高可用性,且不提高應(yīng)用程序復(fù)雜性。從應(yīng)用程序的角度來(lái)講,主動(dòng)到被動(dòng)故障轉(zhuǎn)移群集和單獨(dú)一個(gè)數(shù)據(jù)庫(kù)服務(wù)器之間并無(wú)任何差別。因?yàn)橹鲃?dòng)到主動(dòng)群集中的每個(gè)節(jié)點(diǎn)均擁有其自己的SQLServer實(shí)例,所以主動(dòng)到主動(dòng)適用于經(jīng)過(guò)分區(qū)的數(shù)據(jù)庫(kù),或使用實(shí)例之間進(jìn)行復(fù)制的數(shù)據(jù)庫(kù)。分區(qū)具有負(fù)載分布和冗余的優(yōu)勢(shì),但復(fù)雜性較高。SQLServerN路集群由于利用了Win
18、dowsServer2003提供的增強(qiáng)集群支持,SQLServer在WindowsServer2003DatacenterEdition上支持多達(dá)8個(gè)節(jié)點(diǎn)的集群;在WindowsServer2003EnterpriseEdition和Windows2000DatacenterServer上支持4節(jié)點(diǎn)集群;在Windows2000AdvancedServer上支持兩節(jié)點(diǎn)集群。其安裝過(guò)程和管理工具都支持集群。MicrosoftWindowsClusteringServices是用于保護(hù)數(shù)據(jù)庫(kù)平臺(tái)不受服務(wù)器故障影響的一項(xiàng)重要技術(shù)。WindowsClusteringServices對(duì)所有企業(yè)數(shù)據(jù)庫(kù)應(yīng)用
19、程序都可用,包括SQLServer、Oracle和DB2。WindowsServer操作系統(tǒng)版本不同,它們支持節(jié)點(diǎn)數(shù)的能力也不相同。下表說(shuō)明了Windows2000Server和WindowsServer2003不同版本的基本集群性能。操作系統(tǒng)節(jié)點(diǎn)數(shù)Windows2000Server0Windows2000AdvancedServer2Windows2000DatacenterServer4WindowsServer2003StandardEdition0WindowsServer2003EnterpriseEdition4WindowsServer2003DatacenterEdition8
20、(僅SQLServerEnterprise64位)對(duì)于WindowsClustering,集群中的每個(gè)物理服務(wù)器稱為“節(jié)點(diǎn)”。節(jié)點(diǎn)共同工作組成“集群”。集群中的所有節(jié)點(diǎn)都處于持續(xù)的通信狀態(tài)。如果其中一個(gè)節(jié)點(diǎn)不可用,那么其他節(jié)點(diǎn)將自動(dòng)承擔(dān)其服務(wù)并且開始向用戶提供與故障節(jié)點(diǎn)相同的服務(wù)。這個(gè)過(guò)程稱為“故障轉(zhuǎn)XXXXXXXXXXXX工程技術(shù)標(biāo)書移”。與可以提供無(wú)間斷服務(wù)專業(yè)容錯(cuò)的第三方硬件解決方案不同,Windows集群的故障轉(zhuǎn)移過(guò)程的完成需要約20秒的短時(shí)間隔(取決于所使用的硬件)。另外,必須恢復(fù)故障轉(zhuǎn)移節(jié)點(diǎn)上的數(shù)據(jù)庫(kù),從而保持事務(wù)一致性。該恢復(fù)時(shí)間的長(zhǎng)短很大程度上取決于故障轉(zhuǎn)移時(shí)正在進(jìn)行的數(shù)據(jù)活動(dòng)
21、的水平和所使用的硬件類型。連接到故障節(jié)點(diǎn)的客戶將被斷開連接。當(dāng)他們?cè)噲D重新連接時(shí),將可以訪問(wèn)備用節(jié)點(diǎn)上的集群資源。WindowsClustering具有下列優(yōu)勢(shì):自動(dòng)故障轉(zhuǎn)移:當(dāng)檢測(cè)到故障時(shí),集群將自動(dòng)從主節(jié)點(diǎn)切換到從節(jié)點(diǎn)。對(duì)客戶透明:故障轉(zhuǎn)移完成后,客戶可以使用相同的虛擬名稱和(或)IP地址重新連接到集群中。事務(wù)完整性:所有提交的事務(wù)將被保存,并且在故障轉(zhuǎn)移處理完成后可以使用。快速故障轉(zhuǎn)移:在大多數(shù)情況下,系統(tǒng)的故障轉(zhuǎn)移過(guò)程大約在30秒內(nèi)可以完成。后續(xù)數(shù)據(jù)庫(kù)可用性取決于需要前滾或回滾的事務(wù)數(shù)量。使用N+1配置(N活動(dòng)節(jié)點(diǎn)+1后備節(jié)點(diǎn))的SQLServer2005和WindowsServer2
22、003組合可提供非常靈活且極具成本效益的的集群方案,能實(shí)現(xiàn)高可用性應(yīng)用。例如,在N+1配置8節(jié)點(diǎn)集群中,8個(gè)節(jié)點(diǎn)中的7個(gè)可以設(shè)置為活動(dòng)狀態(tài)以提供不同的服務(wù),而剩下的1個(gè)節(jié)點(diǎn)設(shè)置為被動(dòng)節(jié)點(diǎn),當(dāng)7個(gè)活動(dòng)節(jié)點(diǎn)中任何一個(gè)服務(wù)器出現(xiàn)故障時(shí),它將承擔(dān)起該服務(wù)器的服務(wù)。圖3所示為一個(gè)8節(jié)點(diǎn)集群,其中7個(gè)節(jié)點(diǎn)為活動(dòng)的,1個(gè)節(jié)點(diǎn)備用,等待7個(gè)活動(dòng)節(jié)點(diǎn)之一發(fā)生故障時(shí)切入。13Eight-nodeClusterSupportActivenodes0PassivenodeXXXXXXXXXXXX工程技術(shù)標(biāo)書 圖3:N路集群SQLServer日志傳送日志傳送是一項(xiàng)高可用性和災(zāi)難恢復(fù)解決方案,可以用于在主服務(wù)器故障情況下
23、保護(hù)數(shù)據(jù)庫(kù)。在SQLServer和SQLServer早期版本中均提供了日志傳送,提供對(duì)服務(wù)器故障的低成本保護(hù)措施。日志傳送可以在任何能夠運(yùn)行SQLServer的硬件平臺(tái)上實(shí)現(xiàn),并且它可以配置為與SQLServer的任何版本一起運(yùn)行。日志傳送工作時(shí),首先會(huì)在后備服務(wù)器上還原主數(shù)據(jù)庫(kù)的完全備份。此后,將從主服務(wù)器的數(shù)據(jù)庫(kù)發(fā)送事務(wù)日志,并將這些日志自動(dòng)應(yīng)用到后備服務(wù)器上的數(shù)據(jù)庫(kù)??梢詾槿罩緜魉团渲靡粋€(gè)在后備服務(wù)器上應(yīng)用事務(wù)日志的延遲時(shí)間,從而防止用戶錯(cuò)誤。該用戶定義的延時(shí)提供一個(gè)窗口,可以防止用戶錯(cuò)誤的傳播,如意外刪除、不正確的數(shù)據(jù)輸入、應(yīng)用程序錯(cuò)誤和其他數(shù)據(jù)相關(guān)問(wèn)題。日志傳送包括下列組件:主服務(wù)器
24、:該服務(wù)器包含生產(chǎn)數(shù)據(jù)庫(kù)。SQLServerAgent作業(yè)將定期進(jìn)行生產(chǎn)數(shù)據(jù)庫(kù)事務(wù)日志備份,從而捕捉對(duì)生產(chǎn)數(shù)據(jù)庫(kù)的更改。后備服務(wù)器:后備服務(wù)器包含主數(shù)據(jù)庫(kù)的一個(gè)未恢復(fù)副本。后備服務(wù)器上的SQLServerAgent作業(yè)將定期從主服務(wù)器復(fù)制事務(wù)日志備份,并且將其還原到后備數(shù)據(jù)庫(kù)。監(jiān)視服務(wù)器:該服務(wù)器監(jiān)視主服務(wù)器和后備服務(wù)器的狀態(tài)。與WindowsClusteringServices或DatabaseMirroring不同,日志傳送沒(méi)有進(jìn)行主服務(wù)器和從服務(wù)器角色切換的自動(dòng)過(guò)程。日志傳送可以與WindowsClusteringServices組合使用來(lái)提供保護(hù),防止受到站點(diǎn)級(jí)災(zāi)難和本地服務(wù)器故障的影
25、響。日志傳送使在一個(gè)或多個(gè)從服務(wù)器上維護(hù)生產(chǎn)數(shù)據(jù)庫(kù)成為可能,并且在某個(gè)服務(wù)器或站點(diǎn)發(fā)生故障時(shí),可以提升其中一個(gè)從服務(wù)器,使其成為新的主服務(wù)器。SQLServer復(fù)制事務(wù)復(fù)制是可以用于解決服務(wù)器故障的另一個(gè)技術(shù)工具。盡管復(fù)制可以從主數(shù)據(jù)庫(kù)向從數(shù)據(jù)庫(kù)發(fā)送事務(wù),但并非主要設(shè)計(jì)用作高可用性解決方案,不過(guò),可以將事務(wù)復(fù)制作為低成本的數(shù)據(jù)庫(kù)服務(wù)器備份機(jī)制。圖4所示為SQLServer事務(wù)復(fù)制的概覽。Replicationinilialsynchronization上圖使用復(fù)制的優(yōu)點(diǎn)是從復(fù)制續(xù)可用,并且任何時(shí)刻都可作為報(bào)告服務(wù)器使用。但是,因?yàn)槭聞?wù)復(fù)制并非為實(shí)現(xiàn)高可用性而設(shè)計(jì),提升從服務(wù)器來(lái)承擔(dān)主服務(wù)器角色
26、的過(guò)程不是自動(dòng)的,需要手動(dòng)操作。另外,故障后將主服務(wù)器恢復(fù)為其初始角色需要進(jìn)行完全的數(shù)據(jù)庫(kù)還原。與日志傳送一樣,事務(wù)復(fù)制可與WindowsClusteringServices一同使用,通過(guò)將事務(wù)復(fù)制到從站點(diǎn)的服務(wù)器,以防止受站點(diǎn)故障的影響。SQLServer2005數(shù)據(jù)庫(kù)鏡像SQLServer中的新DatabaseMirroring功能是另一個(gè)重要的選項(xiàng),它可以防止服務(wù)器或數(shù)據(jù)庫(kù)故障引起的計(jì)劃外停機(jī)。顧名思義,DatabaseMirroring提供數(shù)據(jù)庫(kù)級(jí)的故障轉(zhuǎn)移。在主數(shù)據(jù)庫(kù)發(fā)生故障的情況下,DatabaseMirroring將啟用從SQLServer系統(tǒng)上的備用數(shù)據(jù)庫(kù),使系統(tǒng)幾乎可以立即恢
27、復(fù)可用性。單個(gè)數(shù)據(jù)庫(kù)上可以設(shè)置DatabaseMirroring,同一服務(wù)器上的多個(gè)數(shù)據(jù)庫(kù)也可以設(shè)置DatabaseMirroring。它提供零數(shù)據(jù)丟失。從數(shù)據(jù)庫(kù)將實(shí)時(shí)地與主數(shù)據(jù)庫(kù)服務(wù)器上正在進(jìn)行的當(dāng)前事務(wù)同步更新。運(yùn)行DatabaseMirroring對(duì)事務(wù)吞吐量的影響微乎其微,幾乎為零。與運(yùn)行在服務(wù)器級(jí)的WindowsClusteringServices不同,DatabaseMirroring在數(shù)據(jù)庫(kù)級(jí)實(shí)現(xiàn)。DatabaseMirroring具有接近實(shí)時(shí)的故障轉(zhuǎn)移,只需要幾秒鐘;而集群通常需要約30秒的故障轉(zhuǎn)移時(shí)間(有時(shí)更久,取決于故障服務(wù)器上的數(shù)據(jù)庫(kù)活動(dòng)水平和數(shù)據(jù)庫(kù)大小)。Databas
28、eMirroring提供對(duì)磁盤故障的額外保護(hù),因?yàn)槠渲袥](méi)有集群解決方案中的共享Quorum磁盤。另外,對(duì)于DatabaseMirroring實(shí)際上沒(méi)有距離限制;而使用集群的高可用性解決方案有約100英里的距離限制,以傳輸集群節(jié)點(diǎn)之間的“心跳”信號(hào)。與需要特定硬件配置的集群不同,DatabaseMirroring可以與支持SQLServer的所有標(biāo)準(zhǔn)硬件一同工作。圖5所示為新的DatabaseMirroring功能的工作原理概覽。下,所有傳入的客戶端連接都連接到主服務(wù)器。從服務(wù)器的工作是維護(hù)主服務(wù)器鏡像數(shù)據(jù)庫(kù)的一個(gè)副本。從服務(wù)器不限于只提供后備服務(wù),從服務(wù)器上的其他數(shù)據(jù)庫(kù)可以活動(dòng)地支持其他非關(guān)聯(lián)
29、應(yīng)用程序。見(jiàn)證服務(wù)器實(shí)質(zhì)上是作為獨(dú)立的第三方,負(fù)責(zé)確定哪個(gè)系統(tǒng)將承擔(dān)主服務(wù)器的角色。DatabaseMirroring是通過(guò)在主服務(wù)器和從服務(wù)器之間發(fā)送事務(wù)日志而進(jìn)行工作的,從而使DatabaseMirroring成為一個(gè)實(shí)時(shí)的日志傳送應(yīng)用程序。當(dāng)客戶端系統(tǒng)向主服務(wù)器寫入事務(wù)時(shí),在該請(qǐng)求被寫入數(shù)據(jù)庫(kù)文件之前,它被寫入到主服務(wù)器的日志文件中。隨后該事務(wù)記錄將被發(fā)送到從服務(wù)器,然后寫入到從服務(wù)器的事務(wù)日志中。從服務(wù)器將記錄寫入其日志后,將向主服務(wù)器發(fā)送確認(rèn)消息。這使兩個(gè)系統(tǒng)都知道記錄已被接收到,現(xiàn)在同樣的數(shù)據(jù)在每個(gè)服務(wù)器日志文件中都存在。當(dāng)進(jìn)行提交操作時(shí),在主服務(wù)器向客戶端回應(yīng)操作已結(jié)束的信息前,
30、它將等待鏡像服務(wù)器的確認(rèn)消息。從服務(wù)器實(shí)質(zhì)上處于連續(xù)恢復(fù)的狀態(tài),不斷地使用傳入的事務(wù)日志數(shù)據(jù)對(duì)數(shù)據(jù)文件進(jìn)行更新。為了提高客戶端應(yīng)用程序的高可用性,DatabaseMirroring與MicrosoftDataAccessComponents(MDAC)層中稱為“TransparentClientRedirection”的更新協(xié)同工作。TransparentClientRedirection使最終用戶系統(tǒng)在主服務(wù)器的數(shù)據(jù)庫(kù)不可用時(shí),可以自動(dòng)重定向到從服務(wù)器。因?yàn)樾碌腡ransparentClientRedirection功能是在MDAC層中實(shí)現(xiàn)的,所以利用該功能時(shí),不需更改客戶端應(yīng)用程序。MDA
31、C軟件層了解主服務(wù)器和從服務(wù)器的狀態(tài),當(dāng)初始連接到主服務(wù)器時(shí),它會(huì)同時(shí)取得從服務(wù)器的名稱。如果客戶端失去主服務(wù)器連接,MDAC將進(jìn)行一次重新連接到主服務(wù)器的嘗試。如果該連接嘗試失敗,則MDAC將自動(dòng)將接下來(lái)的連接嘗試重定向到從服務(wù)器DatabaseMirroring可以與SQLServer數(shù)據(jù)庫(kù)快照組合,用于創(chuàng)建使用鏡像服務(wù)器數(shù)據(jù)的報(bào)告服務(wù)器。數(shù)據(jù)庫(kù)快照提供特定時(shí)間點(diǎn)的只讀數(shù)據(jù)庫(kù)快照。圖6所示為使用DatabaseMirroring和數(shù)據(jù)庫(kù)快照的組合創(chuàng)建只讀的報(bào)告數(shù)據(jù)庫(kù)的示例。PrincipleVI-rcrMirror&dQ_Pccrl報(bào)告服務(wù)器通常,鏡像服務(wù)器上據(jù)總是恢復(fù)模這意味著任何應(yīng)用程
32、序都不能訪問(wèn)。不過(guò),可以為鏡像的數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù)快照,以創(chuàng)建鏡像數(shù)據(jù)庫(kù)的一個(gè)只讀副本。報(bào)告應(yīng)用程序在只讀模式下可以自由訪問(wèn)該數(shù)據(jù)庫(kù)。高可用性解決方案的綜合對(duì)比以上幾節(jié)分別列出了SQLServer2005的幾種高可用性群集的解決方案,但這幾種解決方案也分別有不同的優(yōu)缺點(diǎn),分別適合不同的應(yīng)用,以下是幾種群集解決方案的綜合性對(duì)比:高可用性故障轉(zhuǎn)移N+1路群集日志傳送數(shù)據(jù)庫(kù)復(fù)制數(shù)據(jù)庫(kù)鏡像服務(wù)器數(shù)2N+12或32或32或3模式Active/PassiveN*Active/PassiveActive/Passive均ActiveActive/Passive應(yīng)用同一種應(yīng)用N種不同的應(yīng)用同一種應(yīng)用同一種應(yīng)用同
33、一種應(yīng)用安全性高,存在存儲(chǔ)的單點(diǎn)故障高,N種應(yīng)用也存在存儲(chǔ)的單點(diǎn)故障較高,但可能存在同步錯(cuò)誤問(wèn)題較高,但可能存在同步錯(cuò)誤問(wèn)題高,不存在存儲(chǔ)單點(diǎn)故障,但比較復(fù)雜性能一臺(tái)運(yùn)行N臺(tái)運(yùn)行同時(shí)運(yùn)行同時(shí)運(yùn)行一臺(tái)運(yùn)行存儲(chǔ)空間共享非共享非共享非共享非共享距離限制“芯”跳線的距離限制“芯”跳線的距離限制無(wú)限制無(wú)限制無(wú)限制適合應(yīng)用高安全性、高可靠性同時(shí)多種應(yīng)用并存,需要同時(shí)提高可用性高可用性和災(zāi)難恢復(fù)解決方案非高可用性而設(shè),主要適用于一主多查詢的應(yīng)用特別適合需要高安全性、高可靠性的長(zhǎng)距離應(yīng)用313升級(jí)到SQLServer的10大理由數(shù)據(jù)分區(qū)只有到了2005和后期版本SQLServer才擁有了真正的表和索引數(shù)據(jù)分區(qū)
34、技術(shù)。這個(gè)技術(shù)一下子使SQLServer成長(zhǎng)為成熟的企業(yè)級(jí)數(shù)據(jù)庫(kù)產(chǎn)品,是一個(gè)里程碑性質(zhì)的標(biāo)志。數(shù)據(jù)分區(qū)技術(shù)極大加強(qiáng)了表的可伸縮性和可管理性,使得SQLServer處理海量數(shù)據(jù)的能力有了質(zhì)的飛躍,是最值得升級(jí)的一個(gè)理由。數(shù)據(jù)庫(kù)隨著硬件和業(yè)務(wù)的發(fā)展變得越來(lái)越大。五年前大多數(shù)數(shù)據(jù)庫(kù)還不過(guò)是十幾個(gè)GB大小,很少超過(guò)TB級(jí)別的?,F(xiàn)在幾百個(gè)GB大小的數(shù)據(jù)庫(kù)系統(tǒng)隨處可見(jiàn)。如果沒(méi)有數(shù)據(jù)分區(qū)技術(shù)而想對(duì)大數(shù)據(jù)庫(kù)進(jìn)行高效管理是很困難的。SQLServer以前版本的一個(gè)問(wèn)題是隨著時(shí)間的推移數(shù)據(jù)庫(kù)設(shè)計(jì)越來(lái)越大備份需要的空間越來(lái)越多,如何處理維普數(shù)據(jù)庫(kù)中的歷史數(shù)據(jù)是很棘手的事情。有些客戶可能會(huì)使用DELETE語(yǔ)句定期定量
35、刪除大表中的歷史記錄,如在每個(gè)周末備份數(shù)據(jù)庫(kù)技術(shù)后刪除一個(gè)星期以前的所有數(shù)據(jù)。但是如果表有上千萬(wàn)行十幾個(gè)GB大小,那么使用DELETE語(yǔ)句刪除數(shù)據(jù)庫(kù)中上萬(wàn)行或高達(dá)20%數(shù)據(jù)的話,其性能很差。如果是在7X24小時(shí)運(yùn)行的聯(lián)機(jī)系統(tǒng)做這樣的數(shù)據(jù)維護(hù)操作那么還會(huì)引起比較嚴(yán)重的阻塞問(wèn)題。另外有些客戶針對(duì)這個(gè)問(wèn)題直接在方案設(shè)計(jì)上下功夫,比如按照年份月份星期設(shè)計(jì)表,然后定期把一些過(guò)時(shí)的歷史數(shù)據(jù)表(注意是“表”)備份并DROP掉,使得數(shù)據(jù)庫(kù)大小以及系統(tǒng)性能都能保持相對(duì)穩(wěn)定。但是這種方法有一個(gè)弊端,即應(yīng)用程序必須做相應(yīng)的配合根據(jù)不同的時(shí)間訪問(wèn)對(duì)應(yīng)的表,增加了數(shù)據(jù)庫(kù)管理以及數(shù)據(jù)庫(kù)訪問(wèn)邏輯的復(fù)雜性。大表還容易帶來(lái)性能
36、問(wèn)題。你也許會(huì)想到SQLServer2000中的本地分區(qū)視圖或分布式分區(qū)視圖技術(shù)。SQLServer2000中的確已經(jīng)有分區(qū)視圖的概念,從SQLServer7.0開始就有了。但分區(qū)視圖的一個(gè)令人討厭的地方是其管理、設(shè)計(jì)和開發(fā)比較困難,特別是分布式分區(qū)視圖。如如何更新分布式視圖就是個(gè)難題。所以盡管一個(gè)設(shè)計(jì)良好的分區(qū)視圖系統(tǒng)會(huì)有很不錯(cuò)的性能改善,卻因?yàn)榉爆嵉呐渲茫芾砗烷_發(fā)使得其沒(méi)有在實(shí)際中得到充分應(yīng)用。現(xiàn)在,SQLServer引入了真正的數(shù)據(jù)水平分區(qū)技術(shù),上面討論的數(shù)據(jù)庫(kù)增長(zhǎng)問(wèn)題和性能問(wèn)題就迎刃而解。這個(gè)進(jìn)步絕對(duì)不是一小步。數(shù)據(jù)庫(kù)的大小不再是個(gè)問(wèn)題。你可以根據(jù)字段值的范圍將表和索引劃分為多個(gè)分區(qū)
37、從而可以輕松管理一個(gè)幾個(gè)TB大小的數(shù)據(jù)庫(kù)系統(tǒng)。無(wú)論數(shù)據(jù)如何增長(zhǎng),你都可以使用分區(qū)技術(shù)使得數(shù)據(jù)庫(kù)大小保持相對(duì)穩(wěn)定。其中特別值得稱贊的地方是SQLServer中分區(qū)的管理和使用非常簡(jiǎn)單。分區(qū)的刪除,添加,拆分、合并和移動(dòng),以及分區(qū)的數(shù)據(jù)裝載等管理都非常容易。你可以對(duì)單獨(dú)的分區(qū)進(jìn)行維護(hù)而不是整個(gè)表。如果你需要大量裝載數(shù)據(jù),那么你可以先把數(shù)據(jù)并行的裝入到一個(gè)新分區(qū)當(dāng)中,建立索引,然后把該分區(qū)合并到當(dāng)前分區(qū)中來(lái)。這個(gè)動(dòng)作需要的時(shí)間極短。如果你需要?jiǎng)h除歷史數(shù)據(jù),假設(shè)你已經(jīng)設(shè)計(jì)好了歷史數(shù)據(jù)分區(qū),那么你僅僅需要把該分區(qū)移除即可,幾乎可以一瞬間完成。分區(qū)也使得大型表的并發(fā)訪問(wèn)性能得到改善,特別是有多個(gè)CPU的數(shù)
38、據(jù)庫(kù)系統(tǒng)。那些需要交叉訪問(wèn)大量數(shù)據(jù)的查詢將從分區(qū)技術(shù)中獲益不少??删幊绦許QLServer的可編程性是值得升級(jí)的第二個(gè)重要理由。從來(lái)沒(méi)有哪一個(gè)版本能像SQLServer這樣帶來(lái)這么多編程方面的變革。有些變化是革命性的。如CLR(CommonLanguageRuntime,公共語(yǔ)言運(yùn)行時(shí))集成。就先說(shuō)說(shuō)CLR集成。CLR集成是指你可以使用任何一種.NET語(yǔ)言編寫SQLServer的存儲(chǔ)過(guò)程,觸發(fā)器,函數(shù),自定義類型,甚至是自定義的聚合函數(shù)。估計(jì)不少數(shù)據(jù)庫(kù)軟件開發(fā)商會(huì)為這個(gè)功能歡呼雀躍。想想以前的擴(kuò)展存儲(chǔ)過(guò)程,編程非常不容易。代碼中一不小心就會(huì)引起內(nèi)存泄漏。而且由于擴(kuò)展存儲(chǔ)過(guò)程運(yùn)行在SQLServ
39、er的進(jìn)程空間中,不好的代碼容易引起訪問(wèn)違規(guī)(AccessViolation)導(dǎo)致SQLServer異?!,F(xiàn)在有了CLR集成,你可以輕松利用.NET語(yǔ)言的優(yōu)勢(shì)如其面向?qū)ο蟮姆庋b、繼承和多態(tài)特性,編寫出那些需要對(duì)數(shù)據(jù)進(jìn)行復(fù)雜數(shù)值計(jì)算或邏輯的代碼,如字符串處理,數(shù)據(jù)加密算法,XML數(shù)據(jù)操作等等。由于CLR代碼宿于SQLServer進(jìn)程,你可以非常容易訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)。有了CLR,你不再局限于T-SQL,你現(xiàn)在立即擁有了.NET框架類庫(kù)提供的各種各樣的類和例程,以及.NET語(yǔ)言提供的一致的編程模型,如錯(cuò)誤處理。展現(xiàn)在你面前的是一個(gè)可以無(wú)限擴(kuò)展的編程空間。你現(xiàn)在需要的僅僅是考慮什么時(shí)候使用T-SQL
40、語(yǔ)言,什么時(shí)候使用CLR。我猜測(cè)那些SQLServer軟件開發(fā)商幾乎會(huì)立即升級(jí)到SQLServer2005享受數(shù)據(jù)庫(kù)編程的便捷T-SQL語(yǔ)言增強(qiáng)SQLServer中的T-SQL語(yǔ)言有了非常大的改進(jìn)。現(xiàn)在可以使用和C+或C#類似的TRYCATCH結(jié)構(gòu)對(duì)T-SQL進(jìn)行錯(cuò)誤處理了,大大簡(jiǎn)化了T-SQL錯(cuò)誤處理編程。SQLServer以前的版本通過(guò)設(shè)置error變量表示最后的T-SQL語(yǔ)句執(zhí)行成功與否。為避免error變量被新執(zhí)行的語(yǔ)句重置,你必須為每一條可能出錯(cuò)的TSQL語(yǔ)句后面立即檢查或保存error變量的值,并使用相應(yīng)的GOTO語(yǔ)句進(jìn)行跳轉(zhuǎn),使得代碼變得復(fù)雜難讀?,F(xiàn)在SQLServer2005有
41、了TRY-CATCH結(jié)構(gòu)你只需要把相關(guān)的一組語(yǔ)句放在TRY塊里面即可。如果TRY塊里面任何語(yǔ)句發(fā)生錯(cuò)誤,就會(huì)執(zhí)行相應(yīng)的CATCH塊。你甚至可以使用嵌套的TRYCATCH來(lái)實(shí)現(xiàn)復(fù)雜錯(cuò)誤處理流程。估計(jì)很多T-SQL語(yǔ)言使用者可能就為了這個(gè)TRY-CATCH結(jié)構(gòu)而迫不及待地升級(jí)到SQLServer。SQLServer中T-SQL語(yǔ)言新增或加強(qiáng)的功能還有很多。如SQLServer新增加了一類排名函數(shù)RANK/DENSE_RANK/NTILE/ROW_NUMBER,輕松解決了開發(fā)者要求返回?cái)?shù)據(jù)行中提供行號(hào)等排序功能。新增的PIVOT和UNPIVOT運(yùn)算符使得對(duì)結(jié)果集進(jìn)行行和列的旋轉(zhuǎn)變換十分簡(jiǎn)單。公用表表
42、達(dá)式(CTE)解決了T-SQL語(yǔ)言的遞歸查詢問(wèn)題,而使用OPENROWSET語(yǔ)句現(xiàn)在可以直接從文件里面執(zhí)行大容量操作了。安全SQLServer的安全功能值得升級(jí)的第三個(gè)理由。SQLServer的安全達(dá)到了前所未有的強(qiáng)大水平,有著比以前版本更清晰的安全模型即主體,安全對(duì)象和權(quán)限。在SQLServer2000中是用服務(wù)器級(jí)權(quán)限、數(shù)據(jù)庫(kù)角色和數(shù)據(jù)用戶權(quán)限的混合方式管理權(quán)限。而SQLServer統(tǒng)一使用GRANT語(yǔ)句管理主體對(duì)安全對(duì)象的權(quán)限,簡(jiǎn)化了安全管理。其中我認(rèn)為最大的改進(jìn)是用戶和架構(gòu)(schema)分離。在SQLServer2000中如果用戶不是DBO且擁有對(duì)象,那么移除該用戶將是很麻煩的事情。
43、你需要首先使用sp_changeobjectowner改變?cè)撚脩魮碛械膶?duì)象所有權(quán),然后把所有引用該對(duì)象的代碼做相應(yīng)的修改。而在SQLServer中就不需要這樣麻煩了,因?yàn)楝F(xiàn)在用戶不再擁有對(duì)象。擁有對(duì)象的是schema而不是用戶。數(shù)據(jù)庫(kù)中的所有對(duì)象都屬于某個(gè)schema。對(duì)象的完整名字是server.database.schema.object,符合SQL-99標(biāo)準(zhǔn),而不是以前的server.database.user.object方式。刪除用戶僅需要改變schema的owner就可以了。不需要修改任何已存在的數(shù)據(jù)庫(kù)訪問(wèn)代碼,真的很方便。用戶和架構(gòu)分離還有一個(gè)好處就是對(duì)象的權(quán)限管理變得簡(jiǎn)單。你可
44、以把某些對(duì)象集中于某個(gè)架構(gòu)里面,然后對(duì)該架構(gòu)設(shè)置權(quán)限,那么架構(gòu)里面的所有對(duì)象就自動(dòng)繼承了同樣的權(quán)限如果需要保護(hù)數(shù)據(jù)庫(kù)中的敏感數(shù)據(jù),那么SQLServer2005中的數(shù)據(jù)加密功能絕對(duì)值得考慮。SQLServer不是簡(jiǎn)單的提供一些加密函數(shù),而是把市場(chǎng)上已經(jīng)成熟的數(shù)據(jù)安全技術(shù)引進(jìn)到數(shù)據(jù)庫(kù)中,有一個(gè)清晰的加密層次結(jié)構(gòu)。SQLServer支持證書(certificate),非對(duì)稱密鑰和對(duì)稱密鑰算法,一是防止敏感數(shù)據(jù)被泄漏,二是防止數(shù)據(jù)被篡改。對(duì)稱密鑰支持RC4,RC2,TripleDES和AES算法,而非對(duì)稱密鑰使用RSA算法。證書其實(shí)就是非對(duì)稱密鑰中公鑰的容器。密鑰管理是安全中比較弱的部分。SQLSe
45、rver每一層都使用證書、非對(duì)稱密鑰和對(duì)稱密鑰的組合對(duì)它下面的一層進(jìn)行加密,提高了密鑰安全性。出于性能考慮,一般不用加密強(qiáng)度大的非對(duì)稱密鑰或證書直接加密數(shù)據(jù),而是使用對(duì)稱密鑰加密數(shù)據(jù)獲得較快的性能,然后使用證書或非對(duì)稱密鑰加密對(duì)稱密鑰??煺崭綦x通過(guò)行版本(rowversioning)控制技術(shù),SQLServer除了原來(lái)支持的四種事務(wù)隔離級(jí)別(臟讀、提交讀、可重復(fù)讀、可串行讀)外新增了一個(gè)快照(SNAPSHOT)隔離級(jí)別,有可能使阻塞或死鎖成為歷史。SQLServer在TEMPDB中存放不同版本的數(shù)據(jù)行,select語(yǔ)句讀取這些不同版本的行,讀操作不阻塞寫數(shù)據(jù),寫操作也不阻塞讀操作,這樣那些由于
46、讀/寫爭(zhēng)用導(dǎo)致的大量死鎖的系統(tǒng)將從中獲得無(wú)窮益處。SQLServer2005中的快照隔離可細(xì)分為兩種即READ_COMMITTED_SNAPSHOT和ALLOW_SNAPSHOT_ISOLATION。建議使用前者,因?yàn)橐烟峤蛔x隔離可用于大多數(shù)現(xiàn)有應(yīng)用程序,而不需要進(jìn)行任何更改,其占用的TEMPDB空間也少??梢灶A(yù)見(jiàn)如果使用快照隔離級(jí)別,那么需要特別關(guān)注TEMPDB的大小和性能。你也許需要把TEMPDB放在有足夠空間的單獨(dú)磁盤上以提高性能。數(shù)據(jù)庫(kù)鏡像對(duì)于那些要求高可用性的用戶來(lái)說(shuō),數(shù)據(jù)庫(kù)鏡像也許是考慮升級(jí)的唯一理由。SQLServer的前版本在高可用性方面提供了故障轉(zhuǎn)移群集(FailoverCl
47、uster)和Logshipping方案。群集方案的一個(gè)好處是在一臺(tái)機(jī)器發(fā)生問(wèn)題時(shí)它可以提供極快的故障轉(zhuǎn)移能力,在備份服務(wù)器上聯(lián)機(jī)數(shù)據(jù)庫(kù),應(yīng)用程序只需重新連接即可。群集方案的一個(gè)缺點(diǎn)是數(shù)據(jù)庫(kù)放在共享盤上,有單點(diǎn)失效這個(gè)缺點(diǎn),一旦共享盤失敗將導(dǎo)致整個(gè)系統(tǒng)崩潰。所以群集方案一般都要結(jié)合嚴(yán)緊的備份方案一起使用。而logshipping系統(tǒng)有一個(gè)時(shí)間上的延遲,且如果日志備份很大,傳送速度也是個(gè)問(wèn)題。SQLServer引入的數(shù)據(jù)庫(kù)鏡像可作為故障轉(zhuǎn)移群集或Logshipping的替代或補(bǔ)充方案來(lái)提高數(shù)據(jù)庫(kù)的高可用性。鏡像的主要優(yōu)點(diǎn)是它比前兩者更容易管理,沒(méi)有群集的單點(diǎn)失效缺點(diǎn),也沒(méi)有l(wèi)ogshipping
48、的時(shí)間延遲。鏡像服務(wù)器可以放在很遠(yuǎn)的地方,提高了作為備份服務(wù)器的高可用性。數(shù)據(jù)庫(kù)鏡像需要兩臺(tái)或三臺(tái)服務(wù)器。主服務(wù)器通過(guò)傳送事務(wù)日志中的每個(gè)事務(wù)到鏡像服務(wù)器來(lái)進(jìn)行數(shù)據(jù)同步。每當(dāng)數(shù)據(jù)庫(kù)commit一個(gè)事務(wù),該事務(wù)就會(huì)被同步到鏡像服務(wù)器。如果事務(wù)安全設(shè)置為FULL傳送操作將為同步操作。同步操作可以確保將提交的事務(wù)提交給兩個(gè)服務(wù)器,但可能會(huì)增加事務(wù)提交的時(shí)間。如果事務(wù)安全設(shè)置為OFF,操作將為異步操作。事務(wù)會(huì)在不等待鏡像服務(wù)器的情況下提交,這將不影響主服務(wù)器事務(wù)的提交時(shí)間,但不能確保鏡像也提交了該事務(wù),所以在出現(xiàn)故障那一刻有可能有部分日志丟失。對(duì)于需要嚴(yán)格同步數(shù)據(jù)的鏡像系統(tǒng)可以采取同步模式。而僅僅希望
49、有個(gè)備份服務(wù)器又不影響性能的情況下可以使用異步模式(高性能模式)。無(wú)論那種模式,一旦主服務(wù)器出現(xiàn)問(wèn)題,你可以手動(dòng)實(shí)現(xiàn)故障轉(zhuǎn)移或配置系統(tǒng)實(shí)現(xiàn)自動(dòng)故障轉(zhuǎn)移。全文搜索增強(qiáng)相對(duì)前版本SQLServer中性能提升最多的部分當(dāng)數(shù)全文檢索。SQLServer2000中的全文本檢索和SQLServer7.0中的差別不大處于能用的水平。在SQLServer2000中使用全文檢索一個(gè)最大的痛苦是建立全文索引的性能不好,需要的時(shí)間太長(zhǎng),特別是在表很大的情況下。一個(gè)幾千萬(wàn)行數(shù)據(jù)的表也許需要數(shù)個(gè)小時(shí)到數(shù)天時(shí)間才能完成全文索引的建立。SQLServer全文檢索在開發(fā)的時(shí)候就集中于三點(diǎn):性能,集成,和可擴(kuò)展性。據(jù)開發(fā)小組人
50、員的簡(jiǎn)單測(cè)試,原來(lái)在SQLServer2000中建立全文索引需要14天的表,現(xiàn)在只需要幾個(gè)小時(shí)!幾乎有上百倍的性能提升,只能用“驚異”來(lái)形容。其相關(guān)的全文檢索語(yǔ)句也有30%50%甚至更高的性能提高。性能方面的提高得益于全新設(shè)計(jì)的全文檢索引擎。其中關(guān)鍵的一點(diǎn)設(shè)計(jì)是全文檢索引擎現(xiàn)在使用共享內(nèi)存和SQLServer進(jìn)行數(shù)據(jù)大規(guī)模并發(fā)交互,而不是原來(lái)基于逐行的方式,使得性能上了好幾個(gè)數(shù)量級(jí)。除了性能,SQLServer中的全文索引的集成性也大大加強(qiáng)。在SQLServer2000中很難對(duì)全文檢索進(jìn)行備份。一旦有數(shù)據(jù)庫(kù)恢復(fù)或移動(dòng),你得重新重建索引。對(duì)于幾百個(gè)GB的數(shù)據(jù)庫(kù),重建索引幾乎是不能接受的惡夢(mèng)。現(xiàn)在
51、終于可以和數(shù)據(jù)庫(kù)一起備份和恢復(fù)全文索引了。除了可以備份外,你也可以方便的改變?nèi)乃饕拇疟P位置。你甚至可以在一個(gè)熱備機(jī)器上把全文索引建立好,然后copy這個(gè)索引到生產(chǎn)服務(wù)器上使用??捎眯怨δ茉鰪?qiáng)索引聯(lián)機(jī)操作。除了數(shù)據(jù)庫(kù)鏡像,SQLServer中可用性還有很多其他提高。索引現(xiàn)在可以使用ONLINE關(guān)鍵字進(jìn)行在線建立或重建或刪除了。它的技術(shù)要點(diǎn)是在內(nèi)存里面動(dòng)態(tài)生成索引的另一個(gè)副本從而不影響原來(lái)查詢的進(jìn)行。一旦索引副本完成操作即替代原來(lái)索引成為當(dāng)前索引。我認(rèn)為索引聯(lián)機(jī)操作的意義是很大的,因?yàn)楹芏鄶?shù)據(jù)庫(kù)系統(tǒng)都有定期調(diào)整或維護(hù)索引方面的需求。有了2005你無(wú)需擔(dān)心業(yè)務(wù)的正常運(yùn)行而大膽的對(duì)索引進(jìn)行維護(hù)或修
52、改。頁(yè)校驗(yàn)和。SQLServer中的數(shù)據(jù)庫(kù)頁(yè)引入校驗(yàn)和增強(qiáng)了數(shù)據(jù)的可靠性。除了原來(lái)SQLServer2000中已有的TORN_PAGE_DETECTION外,SQLServer新增實(shí)現(xiàn)了頁(yè)的檢驗(yàn)和(CHECKSUM)。你使用ALTERDATABASE語(yǔ)句的SETPAGE_VERIFY子句即可指定。它的原理是向磁盤中寫入8K數(shù)據(jù)頁(yè)面時(shí),SQLServer計(jì)算整個(gè)8K頁(yè)面內(nèi)容的校驗(yàn)和并將該值存儲(chǔ)在頁(yè)頭中。再次從磁盤中讀取頁(yè)時(shí),SQLServer動(dòng)態(tài)計(jì)算讀取到的頁(yè)面內(nèi)容的校驗(yàn)和,并與存儲(chǔ)在頁(yè)頭中的校驗(yàn)和值進(jìn)行比較。如果不相等則意味著頁(yè)面有物理?yè)p壞,需要檢查IO硬件。另外設(shè)置檢驗(yàn)和的另一個(gè)好處是還可以
53、在備份和還原操作過(guò)程中使用RESTOREVERIFYONLY語(yǔ)句驗(yàn)證每一數(shù)據(jù)頁(yè)的完整性從而確認(rèn)備份文件沒(méi)有物理?yè)p壞。在線還原。在數(shù)據(jù)庫(kù)的某一部分未恢復(fù)前,用戶無(wú)法對(duì)該部分進(jìn)行訪問(wèn),但可以訪問(wèn)所有其他數(shù)據(jù)。SQLServer2000中如果數(shù)據(jù)庫(kù)在還原或recovery當(dāng)中,用戶不能訪問(wèn)數(shù)據(jù)庫(kù)。這樣如果數(shù)據(jù)庫(kù)很大需要rollback或rollforward的事務(wù)很多的話,recovery的時(shí)間會(huì)出奇的長(zhǎng)。SQLServer的在線還原功能使得數(shù)據(jù)庫(kù)在很短的時(shí)間內(nèi)變得可用。復(fù)制增強(qiáng)SQLServer2000中的復(fù)制功能已經(jīng)很好。SQLServer在原來(lái)的基礎(chǔ)上又增添了不少的功能。如peer-to-pe
54、er對(duì)等復(fù)制,可以在參與者之間相互進(jìn)行復(fù)制,這樣你可以采用對(duì)等復(fù)制在復(fù)制參與者之間建立某種程度的負(fù)載平衡。合并復(fù)制現(xiàn)在支持通過(guò)HTTPS進(jìn)行數(shù)據(jù)同步,可以方便建立基于INTERNET的復(fù)制。發(fā)布表現(xiàn)在可以使用標(biāo)準(zhǔn)的T-SQL語(yǔ)句如AlterTable等進(jìn)行結(jié)構(gòu)修改然后被復(fù)制而不是僅僅局限于使用sp_repladdcolumn和sp_repldropcolumn存儲(chǔ)過(guò)程。在SQLServer2000中,僅支持向其他數(shù)據(jù)庫(kù)(如DB2或Oracle)發(fā)布數(shù)據(jù),而在SQLServer中,可將Oracle數(shù)據(jù)庫(kù)直接復(fù)制到SQLServer可以從備份中初始化事務(wù)性訂閱而不是僅僅局限于從快照對(duì)復(fù)制進(jìn)行初始化
55、。0異步處理能力SQLServer通過(guò)引入全新的ServiceBroker提供了革命性的異步處理能力。ServiceBroker提供了一個(gè)功能強(qiáng)大的異步編程模型它為數(shù)據(jù)庫(kù)應(yīng)用程序增加了可靠、可擴(kuò)展、分布式異步功能異步編程允許程序僅僅在資源可用時(shí)才去執(zhí)行占用大量資源的任務(wù),以此來(lái)縮短響應(yīng)時(shí)間,提高吞吐量。在我看來(lái),Broker的最大好處一是異步執(zhí)行能力,提高了可伸縮性,二是可靠執(zhí)行,三是集成于數(shù)據(jù)庫(kù)中,備份數(shù)據(jù)庫(kù)就備份了broker的消息隊(duì)列。SQLServer中的查詢通知就是基于ServiceBroker的應(yīng)用。你可以使用查詢通知功能來(lái)發(fā)送一個(gè)命令到SQLServer請(qǐng)求在查詢結(jié)果發(fā)生變化時(shí)接
56、收SQLServer的通知。這樣就可以只有在程序以前檢索的結(jié)果發(fā)生變化時(shí),才需要重新查詢數(shù)據(jù)庫(kù)。一個(gè)可以預(yù)見(jiàn)的應(yīng)用是在使用緩存的Web站點(diǎn)中Web站點(diǎn)首先發(fā)送語(yǔ)句到數(shù)據(jù)庫(kù)服務(wù)器,獲得數(shù)據(jù),緩存到本地,然后只有在收到查詢通知的時(shí)候才清理緩存,重新查詢數(shù)據(jù)。這個(gè)機(jī)制避免了重復(fù)輪詢SQLServer,大大減輕了服務(wù)器的負(fù)載,也提高了Web站點(diǎn)的伸縮性。314數(shù)據(jù)遷移到SQL數(shù)據(jù)庫(kù)Server企業(yè)管理器SQLServer企業(yè)管理器允許對(duì)SQLServer和SQLServer對(duì)象的企業(yè)范圍的設(shè)置和管理。SQLServer企業(yè)管理器提供了一個(gè)強(qiáng)大的任務(wù)安排引擎、管理警告能力、以及內(nèi)建的復(fù)制管理界面。你還可
57、以用SQLServer企業(yè)管理器來(lái):管理登錄和用戶權(quán)限、創(chuàng)建腳本、管理SQLSERVER對(duì)象的備份、備份數(shù)據(jù)庫(kù)和事務(wù)日志、管理表、視圖、存儲(chǔ)過(guò)程、觸發(fā)器、索引、規(guī)則、缺省設(shè)定和自定義數(shù)據(jù)類型、創(chuàng)建全文索引、數(shù)據(jù)庫(kù)圖表和數(shù)據(jù)庫(kù)維護(hù)方案、輸入輸出數(shù)據(jù)、轉(zhuǎn)換數(shù)據(jù)執(zhí)行不同的Web網(wǎng)絡(luò)管理任務(wù)。缺省情況下,SQLServer企業(yè)管理器被SQLServer作為服務(wù)器軟件的一部分安裝在運(yùn)行WindowsNT操作系統(tǒng)的計(jì)算機(jī)上,同時(shí)作為客戶軟件的一部分安裝在運(yùn)行WindowsNT和Windows95操作系統(tǒng)的計(jì)算機(jī)上。你很可能要從SQLServer企業(yè)管理器的圖形用戶界面啟動(dòng)數(shù)據(jù)轉(zhuǎn)換服務(wù)(DataTransf
58、ormationServices,DTS)。數(shù)據(jù)轉(zhuǎn)換服務(wù)(DTS)數(shù)據(jù)轉(zhuǎn)換服務(wù)允許你在使用一個(gè)OLEDB結(jié)構(gòu)的多個(gè)數(shù)據(jù)源之間輸入和輸出數(shù)據(jù),這樣的數(shù)據(jù)源有MicrosoftExcel電子表格,以及在運(yùn)行SQLServer7.0的多臺(tái)計(jì)算機(jī)之間執(zhí)行數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)對(duì)象的傳輸。你還可以用DTS來(lái)執(zhí)行數(shù)據(jù)轉(zhuǎn)換,以便用它來(lái)通過(guò)一個(gè)在線事務(wù)處理系統(tǒng)建立數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)商場(chǎng)。DTS向?qū)г试S你交互的創(chuàng)建使用OLEDB和ODBC來(lái)進(jìn)行輸入、輸出、確認(rèn)和不同數(shù)據(jù)的轉(zhuǎn)換的DTS包。向?qū)н€允許你在相關(guān)數(shù)據(jù)庫(kù)之間拷貝計(jì)劃和數(shù)據(jù)。SQLSERVER查詢分析器(ServerQueryAnalyzer)SQLSERVER查詢分
59、析器是一個(gè)圖形化查詢工具,它允許你可視化的分析一個(gè)查詢方案,同時(shí)執(zhí)行多重查詢、查看數(shù)據(jù)、獲得索引建議。SQLServer查詢分析器提供顯示方案(showplan)選項(xiàng),可以用它來(lái)報(bào)告SQLServer查詢優(yōu)化器選擇的數(shù)據(jù)獲取方案。SQLServer輪廓(ServerProfiler)SQLSERVER輪廓實(shí)時(shí)捕捉服務(wù)器活動(dòng)的連續(xù)的記錄。SQLServer輪廓允許你監(jiān)控通過(guò)SQLServer產(chǎn)生的事件,過(guò)濾基于用戶指定準(zhǔn)則的事件和直接跟蹤到顯示器、文件或者表的輸出。使用SQLServer輪廓,你可以重放先前的捕捉記錄。這個(gè)工具幫助應(yīng)用程序開發(fā)人員鑒別可能使應(yīng)用程序性能惡化的事務(wù)。當(dāng)從一個(gè)基于文件
60、的體系結(jié)構(gòu)移植一個(gè)應(yīng)用程序到一個(gè)基于客戶/服務(wù)器的體系結(jié)構(gòu)時(shí),它是很有幫助的,因?yàn)樽詈蟮牟襟E包含針對(duì)應(yīng)用程序的新客戶/服務(wù)器環(huán)境優(yōu)化該應(yīng)用程序的操作。3.2Oracle數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)321Oracle群集RAC概述Oracle真正應(yīng)用集群(RAC)10g主要用于管理領(lǐng)域。OracleRAC10g和Oracle數(shù)據(jù)庫(kù)10g在管理方面的改進(jìn)顯著降低了管理成本,并提供了更出色的靈活性,從而賦予了企業(yè)更高的適應(yīng)性、前瞻性和敏捷性。OracleRAC10g是企業(yè)網(wǎng)格的一項(xiàng)主要基礎(chǔ)技術(shù)。它減弱了阻礙OracleRAC技術(shù)推廣普及的壁壘,有助于實(shí)現(xiàn)“RAC無(wú)處不在”的宏偉目標(biāo)?,F(xiàn)在,企業(yè)的IT部門面臨巨大的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 宣傳制作設(shè)計(jì)合同協(xié)議
- 文化產(chǎn)業(yè)跨文化交流試題及答案探討
- 光電應(yīng)用的經(jīng)濟(jì)效益試題及答案
- 安裝施工電梯合同協(xié)議
- 床簾安裝合同協(xié)議
- 反向工程對(duì)專利的影響試題及答案
- 探索衛(wèi)生管理證書考試機(jī)會(huì)試題及答案
- 鄉(xiāng)村全科執(zhí)業(yè)醫(yī)師考試在線學(xué)習(xí)試題及答案
- 數(shù)學(xué)初中聯(lián)賽試題及答案
- 心理咨詢師2024年考試生涯發(fā)展試題及答案
- 反有組織犯罪法課件
- 動(dòng)作經(jīng)濟(jì)原則課件
- 《學(xué)弈》說(shuō)課稿公開課一等獎(jiǎng)省優(yōu)質(zhì)課大賽獲獎(jiǎng)?wù)n件
- 幼兒園繪本故事:《鼴鼠的皮鞋車》 課件
- 工程概算表【模板】
- 《過(guò)程檢測(cè)技術(shù)及儀表》實(shí)驗(yàn)指導(dǎo)書
- 信用修復(fù)申請(qǐng)書
- 舊廠房拆除施工組織方案
- 全合成水溶性線切割液配方
- DB14∕T 2447-2022 建設(shè)項(xiàng)目環(huán)境影響后評(píng)價(jià)技術(shù)導(dǎo)則 生態(tài)影響類
- 冶金等工貿(mào)企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化達(dá)標(biāo)信息管理系統(tǒng)[冶金等工貿(mào)企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化達(dá)標(biāo)信息管理系統(tǒng)](-33)
評(píng)論
0/150
提交評(píng)論