為什么要升級(jí)到SQL Server 2005
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
很多人關(guān)心的和擔(dān)心的都是 SQL Server 2005 相對(duì)它的前版本SQL Server 2000所做的重大改進(jìn)或新增功能。在我升級(jí)到SQL2005之后,不得不說的:你也值得擁有。(套用一句廣告語(yǔ),呵呵)
我總結(jié)了一下個(gè)人認(rèn)為SQL Server 2005 中最值得你為之升級(jí)的10 個(gè)理由。無(wú)論你是想了解或?qū)W習(xí)SQL Server 2005,還是正在評(píng)估或考慮升級(jí)到SQL Server 2005,我相信當(dāng)時(shí)你看完這篇帖子一定會(huì)對(duì)你的決定起到參考作用。 升級(jí)理由一:數(shù)據(jù)分區(qū) 只有到了2005 版本SQL Server才擁有了真正的表和索引數(shù)據(jù)分區(qū)技術(shù)。這個(gè)技術(shù)一下子使SQL Server數(shù)據(jù)庫(kù)從“青壯年”成長(zhǎng)為成熟的企業(yè)級(jí)數(shù)據(jù)庫(kù)產(chǎn)品,是一個(gè)里程碑性質(zhì)的標(biāo)志。數(shù)據(jù)分區(qū)技術(shù)極大加強(qiáng)了表的可伸縮性和可管理性,使得SQLServer 處理海量數(shù)據(jù)的能力有了質(zhì)的飛躍,是我認(rèn)為最值得升級(jí)的一個(gè)理由。 升級(jí)理由二:可編程性 CLR 集成 SQL Server 2005的可編程性是值得升級(jí)的第二個(gè)重要理由。從來沒有哪一個(gè)版本能像SQL Server 2005 這樣帶來這么多編程方面的變革。說老實(shí)話,在我知道的瞬間我是驚呆了。有些變化是革命性的。如CLR(Common Language Runtime,公共語(yǔ)言運(yùn)行時(shí))集成。你可以輕松利用.NET語(yǔ)言的優(yōu)勢(shì)如其面向?qū)ο蟮姆庋b、繼承和多態(tài)特性,編寫出那些需要對(duì)數(shù)據(jù)進(jìn)行復(fù)雜數(shù)值計(jì)算或邏輯的代碼,如字符串處理,數(shù)據(jù)加密算法,XML數(shù)據(jù)操作等等。你現(xiàn)在需要的僅僅是考慮什么時(shí)候使用T-SQL 語(yǔ)言,什么時(shí)候使用CLR。我猜測(cè)那些SQL Server軟件開發(fā)商幾乎會(huì)立即升級(jí)到SQLServer 2005 享受數(shù)據(jù)庫(kù)編程的便捷。 T-SQL 語(yǔ)言增強(qiáng) SQL Server 2005 中的T-SQL語(yǔ)言有了非常大的改進(jìn)。其中筆者最為稱道的是現(xiàn)在可以使用和C++或C#類似的TRYCATCH結(jié)構(gòu)對(duì)T-SQL 進(jìn)行錯(cuò)誤處理了,大大簡(jiǎn)化了T-SQL錯(cuò)誤處理編程。估計(jì)很多T-SQL語(yǔ)言使用者可能就為了這個(gè)TRY-CATCH 結(jié)構(gòu)而迫不及待地升級(jí)到SQL Server 2005。 升級(jí)理由三:安全 SQL Server 2005 的安全功能是我認(rèn)為值得升級(jí)的第三個(gè)理由。SQL Server 2005 的安全達(dá)到了前所未有的強(qiáng)大水平,有著比以前版本更清晰的安全模型即主體,安全對(duì)象和權(quán)限。 如果你需要保護(hù)數(shù)據(jù)庫(kù)中的敏感數(shù)據(jù),那么SQL Server2005 中的數(shù)據(jù)加密功能絕對(duì)值得考慮。以前不止一次有客戶問我如何加密數(shù)據(jù)庫(kù)中的某些數(shù)據(jù),是否可以使用一些內(nèi)部不公開的函數(shù)如PWDENCRYPT加密數(shù)據(jù)。我的回答是使用Windows的EFS(加密文件系統(tǒng))功能加密數(shù)據(jù)庫(kù)文件或在應(yīng)用程序?qū)訉?duì)數(shù)據(jù)加密后再存儲(chǔ)。現(xiàn)在用戶期盼已久的數(shù)據(jù)加密功能終于在SQL Server 2005 中得到實(shí)現(xiàn),那些有機(jī)密數(shù)據(jù)需要保護(hù)的用戶值得高興了。SQL Server 2005不是簡(jiǎn)單的提供一些加密函數(shù),而是把市場(chǎng)上已經(jīng)成熟的數(shù)據(jù)安全技術(shù)引進(jìn)到數(shù)據(jù)庫(kù)中,有一個(gè)清晰的加密層次結(jié)構(gòu)。SQL Server 2005 支持證書(certificate),非對(duì)稱密鑰和對(duì)稱密鑰算法,一是防止敏感數(shù)據(jù)被泄漏,二是防止數(shù)據(jù)被篡改。對(duì)稱密鑰支持RC4,RC2,TripleDES 和AES算法,而非對(duì)稱密鑰使用RSA 算法。證書其實(shí)就是非對(duì)稱密鑰中公鑰的容器。密鑰管理是安全中比較弱的部分。SQL Server 2005 每一層都使用證書、非對(duì)稱密鑰和對(duì)稱密鑰的組合對(duì)它下面的一層進(jìn)行加密,提高了密鑰安全性。出于性能考慮,一般不用加密強(qiáng)度大的非對(duì)稱密鑰或證書直接加密數(shù)據(jù),而是使用對(duì)稱密鑰加密數(shù)據(jù)獲得較快的性能,然后使用證書或非對(duì)稱密鑰加密對(duì)稱密鑰。 升級(jí)理由四:快照隔離 你還在為系統(tǒng)出現(xiàn)的阻塞(blocking)或死鎖(deadlock)現(xiàn)象苦惱嗎?快試試SQL Server 2005 中的快照隔離吧。通過行版本(row versioning)控制技術(shù),SQL Server 2005 除了原來支持的四種事務(wù)隔離級(jí)別(臟讀、提交讀、可重復(fù)讀、可串行讀)外新增了一個(gè)快照(SNAPSHOT)隔離級(jí)別,有可能使阻塞或死鎖成為歷史。SQL Server在TEMPDB中存放不同版本的數(shù)據(jù)行,select 語(yǔ)句讀取這些不同版本的行,讀操作不阻塞寫數(shù)據(jù),寫操作也不阻塞讀操作,這樣那些由于讀/ 寫爭(zhēng)用導(dǎo)致的大量死鎖的系統(tǒng)將從中獲得無(wú)窮益處。如果你的系統(tǒng)復(fù)雜難優(yōu)化,那么升級(jí)到SQL Server 2005 試試快照隔離級(jí)別,也許會(huì)有意想不到的效果。 SQL Server 2005中的快照隔離可細(xì)分為兩種即READ_COMMITTED_SNAPSHOT和ALLOW_SNAPSHOT_ISOLATION。建議大家多使用前者,因?yàn)橐烟峤蛔x隔離可用于大多數(shù)現(xiàn)有應(yīng)用程序,而不需要進(jìn)行任何更改,其占用的TEMPDB空間也少。可以預(yù)見如果使用快照隔離級(jí)別,那么需要特別關(guān)注TEMPDB的大小和性能。你也許需要把TEMPDB放在有足夠空間的單獨(dú)磁盤上以提高性能。 考慮到快照隔離在避免阻塞和死鎖方面的作用,我把它作為升級(jí)的第四個(gè)理由。 升級(jí)理由五:數(shù)據(jù)庫(kù)鏡像 對(duì)于那些要求高可用性的用戶來說,數(shù)據(jù)庫(kù)鏡像也許是考慮升級(jí)的唯一理由。SQL Server 2005的前版本在高可用性方面提供了故障轉(zhuǎn)移群集(Failover Cluster)和Log shipping方案。群集方案的一個(gè)好處是在一臺(tái)機(jī)器發(fā)生問題時(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è)問題。SQL Server 2005引入的數(shù)據(jù)庫(kù)鏡像可作為故障轉(zhuǎn)移群集或Log shipping 的替代或補(bǔ)充方案來提高數(shù)據(jù)庫(kù)的高可用性。鏡像的主要優(yōu)點(diǎn)是它比前兩者更容易管理,沒有群集的單點(diǎn)失效缺點(diǎn),也沒有l(wèi)og shipping 的時(shí)間延遲。鏡像服務(wù)器可以放在很遠(yuǎn)的地方,提高了作為備份服務(wù)器的高可用性。 升級(jí)理由六:商務(wù)智能BI 增強(qiáng) SQL Server 2005 對(duì)已經(jīng)有或打算開發(fā)基于SQL Server 的商務(wù)智能方案的用戶吸引力極大。SQL Server 2005中有關(guān)商務(wù)智能方面的增強(qiáng)很多,是升級(jí)的很好理由。首先是傳統(tǒng)的DTS(Data Transformation Services)被新的IS(Integration Services)代替。SQL Server 2000 中的DTS用來在不同服務(wù)器之間轉(zhuǎn)移數(shù)據(jù),但對(duì)于復(fù)雜重復(fù)的工作流DTS倍感吃力。IS重新改寫了DTS的數(shù)據(jù)流引擎,引入提取、轉(zhuǎn)換和加載(ETL)數(shù)據(jù)的新編程體系,將數(shù)據(jù)流與控制流分開,開發(fā)能力大大加強(qiáng),包部署、管理和性能方面也比DTS上了一個(gè)數(shù)量級(jí)。筆者看來,DTS終于從原來的小打小鬧成長(zhǎng)為成熟的IS 數(shù)據(jù)集成服務(wù)體系。 分析服務(wù)(Analysis Services)在SQL Server 2005 中也有很多改進(jìn)。原來沒有profiler想跟蹤分析服務(wù)里面的語(yǔ)句非常痛苦。現(xiàn)在2005 終于支持profiler了。Profiler對(duì)性能調(diào)優(yōu)和排查錯(cuò)誤將非常有用。分析服務(wù)2005 真正具備了實(shí)時(shí)分析能力,新增加了四種數(shù)據(jù)挖掘算法,也支持.NET語(yǔ)言進(jìn)行開發(fā)(如存儲(chǔ)過程等)。至于報(bào)表服務(wù),2005 版本中添加了報(bào)表生成器和模型設(shè)計(jì)器這兩個(gè)新工具,支持報(bào)表拖拉設(shè)計(jì)。2005 的報(bào)表改進(jìn)如新的打印功能、多值參數(shù)等。設(shè)計(jì)過報(bào)表的人員會(huì)深深知道多值參數(shù)的妙處。 另外,無(wú)論是IS、報(bào)表服務(wù)等都可以在類似Visual Studio的環(huán)境中開發(fā),任務(wù)完成不過鼠標(biāo)拖拉之間,非常容易上手。 升級(jí)理由七:全文搜索增強(qiáng) 相對(duì)前版本SQL Server 2005中性能提升最多的部分當(dāng)數(shù)全文檢索。SQL Server 2000 中的全文本檢索和SQL Server 7.0中的差別不大,處于能用的水平。在SQL Server 2000中使用全文檢索一個(gè)最大的痛苦是建立全文索引的性能不好,需要的時(shí)間太長(zhǎng),特別是在表很大的情況下。一個(gè)幾千萬(wàn)行數(shù)據(jù)的表也許需要數(shù)個(gè)小時(shí)到數(shù)天時(shí)間才能完成全文索引的建立。SQL Server 2005全文檢索在開發(fā)的時(shí)候就集中于三點(diǎn):性能,集成,和可擴(kuò)展性。據(jù)開發(fā)小組人員的簡(jiǎn)單測(cè)試,原來在SQL Server 2000中建立全文索引需要14天的表,現(xiàn)在只需要幾個(gè)小時(shí)!幾乎有上百倍的性能提升,只能用“驚異”來形容。其相關(guān)的全文檢索語(yǔ)句也有30%~50%甚至更高的性能提高。性能方面的提高得益于全新設(shè)計(jì)的全文檢索引擎。其中關(guān)鍵的一點(diǎn)設(shè)計(jì)是全文檢索引擎現(xiàn)在使用共享內(nèi)存和SQL Server 進(jìn)行數(shù)據(jù)大規(guī)模并發(fā)交互,而不是原來基于逐行的方式,使得性能上了好幾個(gè)數(shù)量級(jí)。 除了性能,SQL Server 2005 中的全文索引的集成性也大大加強(qiáng)。在SQL Server 2000 中很難對(duì)全文檢索進(jìn)行備份。一旦有數(shù)據(jù)庫(kù)恢復(fù)或移動(dòng),你得重新重建索引。對(duì)于幾百個(gè)GB的數(shù)據(jù)庫(kù),重建索引幾乎是不能接受的惡夢(mèng)。現(xiàn)在終于可以和數(shù)據(jù)庫(kù)一起備份和恢復(fù)全文索引了。你不再需要在恢復(fù)數(shù)據(jù)庫(kù)后重建全文索引了!惡夢(mèng)終于成為歷史。除了可以備份外,你也可以方便的改變?nèi)乃饕拇疟P位置。你甚至可以在一個(gè)熱備機(jī)器上把全文索引建立好,然后copy 這個(gè)索引到生產(chǎn)服務(wù)器上使用。 升級(jí)理由八:可用性功能增強(qiáng) 索引聯(lián)機(jī)操作。除了數(shù)據(jù)庫(kù)鏡像,SQL Server 2005 中可用性還有很多其他提高。索引現(xiàn)在可以使用ONLINE關(guān)鍵字進(jìn)行在線建立或重建或刪除了。它的技術(shù)要點(diǎn)是在內(nèi)存里面動(dòng)態(tài)生成索引的另一個(gè)副本從而不影響原來查詢的進(jìn)行。一旦索引副本完成操作即替代原來索引成為當(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ù)或修改。 頁(yè)校驗(yàn)和。SQL Server 2005中的數(shù)據(jù)庫(kù)頁(yè)引入校驗(yàn)和增強(qiáng)了數(shù)據(jù)的可靠性。除了原來SQL Server 2000 中已有的TORN_PAGE_DETECTION 外,SQL Server 2005 新增實(shí)現(xiàn)了頁(yè)的檢驗(yàn)和(CHECKSUM)。你使用ALTER DATABASE語(yǔ)句的SET PAGE_VERIFY子句即可指定。它的原理是向磁盤中寫入8K數(shù)據(jù)頁(yè)面時(shí),SQL Server計(jì)算整個(gè)8K頁(yè)面內(nèi)容的校驗(yàn)和并將該值存儲(chǔ)在頁(yè)頭中。再次從磁盤中讀取頁(yè)時(shí),SQL Server動(dòng)態(tài)計(jì)算讀取到的頁(yè)面內(nèi)容的校驗(yàn)和,并與存儲(chǔ)在頁(yè)頭中的校驗(yàn)和值進(jìn)行比較。如果不相等則意味著頁(yè)面有物理?yè)p壞,需要檢查IO硬件。另外設(shè)置檢驗(yàn)和的另一個(gè)好處是還可以在備份和還原操作過程中使用RESTORE VERIFYONLY語(yǔ)句驗(yàn)證每一數(shù)據(jù)頁(yè)的完整性從而確認(rèn)備份文件沒有物理?yè)p壞。 在線還原。在數(shù)據(jù)庫(kù)的某一部分未恢復(fù)前,用戶無(wú)法對(duì)該部分進(jìn)行訪問,但可以訪問所有其他數(shù)據(jù)。SQL Server 2000中如果數(shù)據(jù)庫(kù)在還原或recovery當(dāng)中,用戶不能訪問數(shù)據(jù)庫(kù)。這樣如果數(shù)據(jù)庫(kù)很大需要rollback或rollforward的事務(wù)很多的話,recovery的時(shí)間會(huì)出奇的長(zhǎng)。SQL Server 2005 的在線還原功能使得數(shù)據(jù)庫(kù)在很短的時(shí)間內(nèi)變得可用。 升級(jí)理由九:復(fù)制增強(qiáng) SQL Server 2000 中的復(fù)制功能已經(jīng)很好。我這里把復(fù)制作為升級(jí)的一個(gè)理由因?yàn)镾QL Server 2005在原來的基礎(chǔ)上又增添了不少的功能。如peer-to-peer對(duì)等復(fù)制,可以在參與者之間相互進(jìn)行復(fù)制,這樣你可以采用對(duì)等復(fù)制在復(fù)制參與者之間建立某種程度的負(fù)載平衡。合并復(fù)制現(xiàn)在支持通過HTTPS進(jìn)行數(shù)據(jù)同步,可以方便建立基于INTERNET 的復(fù)制。發(fā)布表現(xiàn)在可以使用標(biāo)準(zhǔn)的T-SQL語(yǔ)句如Alter Table等進(jìn)行結(jié)構(gòu)修改然后被復(fù)制而不是僅僅局限于使用sp_repladdcolumn和sp_repldropcolumn存儲(chǔ)過程。在SQL Server 2000 中,僅支持向其他數(shù)據(jù)庫(kù)(如DB2或Oracle)發(fā)布數(shù)據(jù),而在SQL Server 2005 中,可將Oracle 數(shù)據(jù)庫(kù)直接復(fù)制到SQL Server。可以從備份中初始化事務(wù)性訂閱而不是僅僅局限于從快照對(duì)復(fù)制進(jìn)行初始化,等等…… 升級(jí)理由十:異步處理能力 SQL Server 2005 通過引入全新的Service Broker 提供了革命性的異步處理能力。Service Broker提供了一個(gè)功能強(qiáng)大的異步編程模型。它為數(shù)據(jù)庫(kù)應(yīng)用程序增加了可靠、可擴(kuò)展、分布式異步功能異步編程,允許程序僅僅在資源可用時(shí)才去執(zhí)行占用大量資源的任務(wù),以此來縮短響應(yīng)時(shí)間,提高吞吐量。在我看來,Broker的最大好處一是異步執(zhí)行能力,提高了可伸縮性,二是可靠執(zhí)行,三是集成于數(shù)據(jù)庫(kù)中,備份數(shù)據(jù)庫(kù)就備份了broker 的消息隊(duì)列。SQL Server 2005 中的查詢通知就是基于Service Broker的應(yīng)用。你可以使用查詢通知功能來發(fā)送一個(gè)命令到SQL Server請(qǐng)求在查詢結(jié)果發(fā)生變化時(shí)接收SQL Server的通知。這樣就可以只有在程序以前檢索的結(jié)果發(fā)生變化時(shí),才需要重新查詢數(shù)據(jù)庫(kù)。一個(gè)可以預(yù)見的應(yīng)用是在使用緩存的Web 站點(diǎn)中。Web站點(diǎn)首先發(fā)送語(yǔ)句到數(shù)據(jù)庫(kù)服務(wù)器,獲得數(shù)據(jù),緩存到本地,然后只有在收到查詢通知的時(shí)候才清理緩存,重新查詢數(shù)據(jù)。這個(gè)機(jī)制避免了重復(fù)輪詢SQL Server,大大減輕了服務(wù)器的負(fù)載,也提高了Web 站點(diǎn)的伸縮性。 因?yàn)镾QL Server 2005 的Service Broker帶來了數(shù)據(jù)庫(kù)編程異步處理能力的革命,我把它作為升級(jí)的第十個(gè)理由。 該文章在 2014/1/27 9:09:50 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |