[SQL SERVER][Denali] 淺談 Database Engine 新特性

[SQL SERVER][Denali] 淺談 Database Engine 新特性

今年我參加 Techdays2011 開發人員SQL語法效率探險課程,

講師大概提了幾個 Denali 開發方面的新特性(如  Sequence、offset),

而到目前為止我查看 BOL Database Engine 關於開發方面的改善和加強還算不少,

這意味你可以使用更簡單、更省時、更有效率的方式來達到某種需求(好比分頁)...等。

 

但在效能和可擴展性方面倒是讓我有點小失望 ,

例如 Partition Table 較明顯的改善就是分區數量上限達15000(以前上限1000),

但我個人比較希望有更多 Partition Table 類型供DBA選擇,

因為我在現實世界中常常為了設定合適的 Partition Key 大傷腦經,

大部分作法都是新增欄位,且寫入特定分區識別資料(如A~Z...等),

但這樣的做法相當耗費時間(尤其是超過一千五百萬筆的資料表)。

還有這版新增Columnstore Indexes

可惜到目前為止該索引無法完全適用OLTP(Columnstore Indexes 主要改善 ROLAP performance)。

唯一值得開心的就是 Online Index Rebuild 終於支援 varchar(max)、 nvarchar(max)、 and varbinary(max) 大型資料類型資料行。

 

管理方面如 SSMS 改善、啟動參數設定改善(如下圖)、DTA更具參考價值及新增數個DMV和Function..等。

image

但我比較有興趣的是 Contained Databases (給SQL Server Team拍拍手),

因為 Contained Databases(包含整個資料庫相關設定和 metadata ) 解決以往資料庫轉移所遇到的問題,

以往當我們使用 backup and restore or detach and attach到另一台 Server後,我們還得額外處理一些設定資料庫才算完整轉移,

如資料庫相關設定、 Roles(或其他安全性物件,最常就是處理登入使用者問題)、Database Mail、SQL Server Agent Jobs…等。

但當你啟用 Contained Databases 認證後,你將不用擔心登入使用者安全性問題...等(後面我也會找時間來玩玩看並測試一番)。

 

高可用性方面改善如 Indirect Checkpoints(減少資料庫整體回復時間,不過會消耗一些效能,因為背景不斷的自動寫入 disk )、

AlwaysOn Availability Groups(Database mirroring的鏡像 Server 支援ReadOnly...等)、

image

AlwaysOn SQL Server Failover Cluster Instances(這次你可以在 Windows Failover Cluster安裝多個SQL Server Failover Cluster Instances)。

強調災難發生時,SQL Server 服務不中斷(AlwaysOn),當然這得看使用者可接受範圍,因為 Failover 轉換也是需要時間,

如有些使用者要求30~60秒以內完成 Failover轉換。

 

安全性方面改善如SQL Serve Audit(當本身Audit發生錯誤時,可以有三種處理方法。CONTINUE 、 SHUTDOWN 、 FAIL_OPERATION...等 ),

也多了新權限及角色...等。安全性這部分我這裡就不多說了,你可以參考BOL將有更詳細的說明。

 

我大概簡述了 Database Engine 在 Denali 有那些改善和加強,不可否認 Denali 還是有讓我眼睛為之一亮,

所以後面我也會找時間來玩玩那些讓我感興趣的技術或特性。