升級至SQL Server 2005的理由[zt]

xsb發表於2008-07-14
SQL Server 2005 中最值得你為之升級的10 個理由。無論你是想了解或學習SQL Server 2005,還是正在評估或考慮升級到SQL Server 2005,我相信當時你看完這篇帖子一定會對你的決定起到參考作用。[@more@]


本篇文章來源於 站長資訊網 原文連結:

升級理由一:資料分割槽

  只有到了2005 版本SQL Server才擁有了真正的表和索引資料分割槽技術。這個技術一下子使SQL Server資料庫從“青壯年”成長為成熟的企業級資料庫產品,是一個里程碑性質的標誌。資料分割槽技術極大加強了表的可伸縮性和可管理性,使得SQLServer 處理海量資料的能力有了質的飛躍,是我認為最值得升級的一個理由。

  升級理由二:可程式設計性

  CLR 整合

  SQL Server 2005的可程式設計性是值得升級的第二個重要理由。從來沒有哪一個版本能像SQL Server 2005 這樣帶來這麼多程式設計方面的變革。說老實話,在我知道的瞬間我是驚呆了。有些變化是革命性的。如CLR(Common Language Runtime,公共語言執行時)整合。你可以輕鬆利用.NET語言的優勢如其物件導向的封裝、繼承和多型特性,編寫出那些需要對資料進行復雜數值計算或邏輯的程式碼,如字串處理,資料加密演算法,XML資料操作等等。你現在需要的僅僅是考慮什麼時候使用T-SQL 語言,什麼時候使用CLR。我猜測那些SQL Server軟體開發商幾乎會立即升級到SQLServer 2005 享受資料庫程式設計的便捷。

  T-SQL 語言增強

  SQL Server 2005 中的T-SQL語言有了非常大的改進。其中筆者最為稱道的是現在可以使用和C++或C#類似的TRYCATCH結構對T-SQL 進行錯誤處理了,大大簡化了T-SQL錯誤處理程式設計。估計很多T-SQL語言使用者可能就為了這個TRY-CATCH 結構而迫不及待地升級到SQL Server 2005。

  升級理由三:安全

  SQL Server 2005 的安全功能是我認為值得升級的第三個理由。SQL Server 2005 的安全達到了前所未有的強大水平,有著比以前版本更清晰的安全模型即主體,安全物件和許可權。

  如果你需要保護資料庫中的敏感資料,那麼SQL Server2005 中的資料加密功能絕對值得考慮。以前不止一次有客戶問我如何加密資料庫中的某些資料,是否可以使用一些內部不公開的函式如PWDENCRYPT加密資料。我的回答是使用Windows的EFS(加密檔案系統)功能加密資料庫檔案或在應用程式層對資料加密後再儲存。現在使用者期盼已久的資料加密功能終於在SQL Server 2005 中得到實現,那些有機密資料需要保護的使用者值得高興了。SQL Server 2005不是簡單的提供一些加密函式,而是把市場上已經成熟的資料安全技術引進到資料庫中,有一個清晰的加密層次結構。SQL Server 2005 支援證照(certificate),非對稱金鑰和對稱金鑰演算法,一是防止敏感資料被洩漏,二是防止資料被篡改。對稱金鑰支援RC4,RC2,TripleDES 和AES演算法,而非對稱金鑰使用RSA 演算法。證照其實就是非對稱金鑰中公鑰的容器。金鑰管理是安全中比較弱的部分。SQL Server 2005 每一層都使用證照、非對稱金鑰和對稱金鑰的組合對它下面的一層進行加密,提高了金鑰安全性。出於效能考慮,一般不用加密強度大的非對稱金鑰或證照直接加密資料,而是使用對稱金鑰加密資料獲得較快的效能,然後使用證照或非對稱金鑰加密對稱金鑰。

  升級理由四:快照隔離

  你還在為系統出現的阻塞(blocking)或死鎖(deadlock)現象苦惱嗎?快試試SQL Server 2005 中的快照隔離吧。透過行版本(row versioning)控制技術,SQL Server 2005 除了原來支援的四種事務隔離級別(髒讀、提交讀、可重複讀、可序列讀)外新增了一個快照(SNAPSHOT)隔離級別,有可能使阻塞或死鎖成為歷史。SQL Server在TEMPDB中存放不同版本的資料行,select 語句讀取這些不同版本的行,讀操作不阻塞寫資料,寫操作也不阻塞讀操作,這樣那些由於讀/ 寫爭用導致的大量死鎖的系統將從中獲得無窮益處。如果你的系統複雜難最佳化,那麼升級到SQL Server 2005 試試快照隔離級別,也許會有意想不到的效果。

  SQL Server 2005中的快照隔離可細分為兩種即READ_COMMITTED_SNAPSHOT和ALLOW_SNAPSHOT_ISOLATION。建議大家多使用前者,因為已提交讀隔離可用於大多數現有應用程式,而不需要進行任何更改,其佔用的TEMPDB空間也少。可以預見如果使用快照隔離級別,那麼需要特別關注TEMPDB的大小和效能。你也許需要把TEMPDB放在有足夠空間的單獨磁碟上以提高效能。

  考慮到快照隔離在避免阻塞和死鎖方面的作用,我把它作為升級的第四個理由。

  升級理由五:資料庫映象

  對於那些要求高可用性的使用者來說,資料庫映象也許是考慮升級的唯一理由。SQL Server 2005的前版本在高可用性方面提供了故障轉移群集(Failover Cluster)和Log shipping方案。群集方案的一個好處是在一臺機器發生問題時它可以提供極快的故障轉移能力,在備份伺服器上聯機資料庫,應用程式只需重新連線即可。群集方案的一個缺點是資料庫放在共享盤上,有單點失效這個缺點,一旦共享盤失敗將導致整個系統崩潰。所以群集方案一般都要結合嚴緊的備份方案一起使用。而logshipping系統有一個時間上的延遲,且如果日誌備份很大,傳送速度也是個問題。SQL Server 2005引入的資料庫映象可作為故障轉移群集或Log shipping 的替代或補充方案來提高資料庫的高可用性。映象的主要優點是它比前兩者更容易管理,沒有群集的單點失效缺點,也沒有log shipping 的時間延遲。映象伺服器可以放在很遠的地方,提高了作為備份伺服器的高可用性。

  升級理由六:商務智慧BI 增強

  SQL Server 2005 對已經有或打算開發基於SQL Server 的商務智慧方案的使用者吸引力極大。SQL Server 2005中有關商務智慧方面的增強很多,是升級的很好理由。首先是傳統的DTS(Data Transformation Services)被新的IS(Integration Services)代替。SQL Server 2000 中的DTS用來在不同伺服器之間轉移資料,但對於複雜重複的工作流DTS倍感吃力。IS重新改寫了DTS的資料流引擎,引入提取、轉換和載入(ETL)資料的新程式設計體系,將資料流與控制流分開,開發能力大大加強,包部署、管理和效能方面也比DTS上了一個數量級。筆者看來,DTS終於從原來的小打小鬧成長為成熟的IS 資料整合服務體系。

  分析服務(Analysis Services)在SQL Server 2005 中也有很多改進。原來沒有profiler想跟蹤分析服務裡面的語句非常痛苦。現在2005 終於支援profiler了。Profiler對效能調優和排查錯誤將非常有用。分析服務2005 真正具備了實時分析能力,新增加了四種資料探勘演算法,也支援.NET語言進行開發(如儲存過程等)。至於報表服務,2005 版本中新增了報表生成器和模型設計器這兩個新工具,支援報表拖拉設計。2005 的報表改進如新的列印功能、多值引數等。設計過報表的人員會深深知道多值引數的妙處。

  另外,無論是IS、報表服務等都可以在類似Visual Studio的環境中開發,任務完成不過滑鼠拖拉之間,非常容易上手。

升級理由七:全文搜尋增強

  相對前版本SQL Server 2005中效能提升最多的部分當數全文檢索。SQL Server 2000 中的全文字檢索和SQL Server 7.0中的差別不大,處於能用的水平。在SQL Server 2000中使用全文檢索一個最大的痛苦是建立全文索引的效能不好,需要的時間太長,特別是在表很大的情況下。一個幾千萬行資料的表也許需要數個小時到數天時間才能完成全文索引的建立。SQL Server 2005全文檢索在開發的時候就集中於三點:效能,整合,和可擴充套件性。據開發小組人員的簡單測試,原來在SQL Server 2000中建立全文索引需要14天的表,現在只需要幾個小時!幾乎有上百倍的效能提升,只能用“驚異”來形容。其相關的全文檢索語句也有30%~50%甚至更高的效能提高。效能方面的提高得益於全新設計的全文檢索引擎。其中關鍵的一點設計是全文檢索引擎現在使用共享記憶體和SQL Server 進行資料大規模併發互動,而不是原來基於逐行的方式,使得效能上了好幾個數量級。

  除了效能,SQL Server 2005 中的全文索引的整合性也大大加強。在SQL Server 2000 中很難對全文檢索進行備份。一旦有資料庫恢復或移動,你得重新重建索引。對於幾百個GB的資料庫,重建索引幾乎是不能接受的惡夢。現在終於可以和資料庫一起備份和恢復全文索引了。你不再需要在恢復資料庫後重建全文索引了!惡夢終於成為歷史。除了可以備份外,你也可以方便的改變全文索引的磁碟位置。你甚至可以在一個熱備機器上把全文索引建立好,然後copy 這個索引到生產伺服器上使用。

  升級理由八:可用性功能增強

  索引聯機操作。除了資料庫映象,SQL Server 2005 中可用性還有很多其他提高。索引現在可以使用ONLINE關鍵字進行線上建立或重建或刪除了。它的技術要點是在記憶體裡面動態生成索引的另一個副本從而不影響原來查詢的進行。一旦索引副本完成操作即替代原來索引成為當前索引。我認為索引聯機操作的意義是很大的,因為很多資料庫系統都有定期調整或維護索引方面的需求。有了2005 你無需擔心業務的正常執行而大膽的對索引進行維護或修改。

  頁校驗和。SQL Server 2005中的資料庫頁引入校驗和增強了資料的可靠性。除了原來SQL Server 2000 中已有的TORN_PAGE_DETECTION 外,SQL Server 2005 新增實現了頁的檢驗和(CHECKSUM)。你使用ALTER DATABASE語句的SET PAGE_VERIFY子句即可指定。它的原理是向磁碟中寫入8K資料頁面時,SQL Server計算整個8K頁面內容的校驗和並將該值儲存在頁頭中。再次從磁碟中讀取頁時,SQL Server動態計算讀取到的頁面內容的校驗和,並與儲存在頁頭中的校驗和值進行比較。如果不相等則意味著頁面有物理損壞,需要檢查IO硬體。另外設定檢驗和的另一個好處是還可以在備份和還原操作過程中使用RESTORE VERIFYONLY語句驗證每一資料頁的完整性從而確認備份檔案沒有物理損壞。

  線上還原。在資料庫的某一部分未恢復前,使用者無法對該部分進行訪問,但可以訪問所有其他資料。SQL Server 2000中如果資料庫在還原或recovery當中,使用者不能訪問資料庫。這樣如果資料庫很大需要rollback或rollforward的事務很多的話,recovery的時間會出奇的長。SQL Server 2005 的線上還原功能使得資料庫在很短的時間內變得可用。

  升級理由九:複製增強

  SQL Server 2000 中的複製功能已經很好。我這裡把複製作為升級的一個理由因為SQL Server 2005在原來的基礎上又增添了不少的功能。如peer-to-peer對等複製,可以在參與者之間相互進行復制,這樣你可以採用對等複製在複製參與者之間建立某種程度的負載平衡。合併複製現在支援透過HTTPS進行資料同步,可以方便建立基於INTERNET 的複製。釋出表現在可以使用標準的T-SQL語句如Alter Table等進行結構修改然後被複制而不是僅僅侷限於使用sp_repladdcolumn和sp_repldropcolumn儲存過程。在SQL Server 2000 中,僅支援向其他資料庫(如DB2或Oracle)釋出資料,而在SQL Server 2005 中,可將Oracle 資料庫直接複製到SQL Server。可以從備份中初始化事務性訂閱而不是僅僅侷限於從快照對複製進行初始化,等等……

  升級理由十:非同步處理能力

  SQL Server 2005 透過引入全新的Service Broker 提供了革命性的非同步處理能力。Service Broker提供了一個功能強大的非同步程式設計模型。它為資料庫應用程式增加了可靠、可擴充套件、分散式非同步功能非同步程式設計,允許程式僅僅在資源可用時才去執行佔用大量資源的任務,以此來縮短響應時間,提高吞吐量。在我看來,Broker的最大好處一是非同步執行能力,提高了可伸縮性,二是可靠執行,三是整合於資料庫中,備份資料庫就備份了broker 的訊息佇列。SQL Server 2005 中的查詢通知就是基於Service Broker的應用。你可以使用查詢通知功能來傳送一個命令到SQL Server請求在查詢結果發生變化時接收SQL Server的通知。這樣就可以只有在程式以前檢索的結果發生變化時,才需要重新查詢資料庫。一個可以預見的應用是在使用快取的Web 站點中。Web站點首先傳送語句到資料庫伺服器,獲得資料,快取到本地,然後只有在收到查詢通知的時候才清理快取,重新查詢資料。這個機制避免了重複輪詢SQL Server,大大減輕了伺服器的負載,也提高了Web 站點的伸縮性。

  因為SQL Server 2005 的Service Broker帶來了資料庫程式設計非同步處理能力的革命,我把它作為升級的第十個理由。

  總結語

  上面列出的十大理由僅僅是基於個人的看法,並沒有囊括SQL Server 2005 所有的功能。SQL Server 2005 還有其他很多非常優秀或重大的改進。比如支援透過HTTP SOAP協議直接訪問資料庫,增加XML資料型別,支援Xquery,使用新的SQL ServerManagement Studio 等等。有一點我必須提一下,就是現在可以呼叫sp_create_plan_guide來強制指定SQL Server總是使用某個執行計劃執行語句,避免SQL Server動態生成不夠最佳化的查詢計劃,實在太棒了。在筆者看來,SQL Server 2005 帶來的好處遠遠大於升級導致的工作量,升級到SQL Server 2005 是遲早的事情。

  另外, SQL Server 和 CLR 的整合主要提供瞭如下好處:

  1.增強的程式設計模型:.NET Framework 相容的程式語言在很多方面要比T-SQL更強大,它提供給SQL 開發人員之前沒有的架構和功能。

  2.增強的安全性: 在CLR環境下執行的託管程式碼被資料庫引擎所控制,這使得.NET Framework 資料庫物件能夠比以前版本的SQL Server中的擴充套件儲存過程執行的更安全,並具備更好的安全性。

  3.使用者自定義型別和聚合: 藉助宿主CLR,這兩個新的資料庫物件擴充套件了SQL Server 的儲存和查詢能力。

  4.通用開發環境: 資料庫開發被整合到Microsoft Visual Studio 2005 開發環境中。 用來開發中間層和客戶層.NET Framework元件和服務的工具同樣可以被用來開發和除錯資料庫物件和指令碼。

  5.效能和可伸縮性: 因為託管程式碼被編譯為本機程式碼得以優先執行,在某些場合效能可以得到顯著的提升。

  6.利用CLR整合,你可以用Visual Basic .NET 和 C#這樣的語言寫出具有更復雜邏輯的程式碼和更適用於計算型任務的程式碼。而且,Visual Basic .NET 和 C# 還提供了諸如封裝、繼承、多型這樣的物件導向的功能。你現在可以更容易的把程式碼和類、名稱空間組織在一起,這意味著你更容易組織和維護在工作中產生的大量程式碼。這種從邏輯上和物理上把程式碼組織到程式集和名稱空間中的功能非常有用,它將使你能夠更好的在一個大型資料庫實現專案中發現和關聯不同的程式碼塊。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12402/viewspace-1007243/,如需轉載,請註明出處,否則將追究法律責任。

相關文章