SQL Server 2008管理和開發的相關效能
一般而言,企業的資料每年以1.5倍的等比級數成長,而應用資料的方式也一直翻新。這造成對資料平臺的穩定性、安全、效率、可擴充性、易管理、好開發、跨 平臺同步資料…等需求也日益嚴苛。微軟在今年(2008)第三季發布了SQL Server 2008,它針對上述需求全面地強化。而本文僅針對執行效率有關的部分進行討論。
管理方面
以原則為基礎(Policy-based)的管理:
組合管理條件后,套用到服務器、資料庫、資料表...等單位,定期檢查或強制施行。在在Microsoft SQL Server 2008 Feature Pack( http://www.microsoft.com/downloads/details.aspx?FamilyId=C6C3E9EF- BA29-4A43-8D69-A2BED18FE73C&displaylang=en)已經提供了許多與效能相關的管理原則,可用以檢核相關 的SQL Server設定。
保障運算效能與分析
效能資料搜集分析與Management Data Warehouse:集中收集多臺 SQL Server服務器執行個體的資料,例如管理或效能資訊(硬盤使用、查詢統計、系統效能計數器…等),并產生分析報表。
透過精靈在指定的服務器只行個體建立SQL Server預先定義好、存放系統資料的資料倉儲(data warehouse),該資料倉儲就是一般的資料庫。
在個別服務器執行個體收集到資料后,預設先快取到指定的本機目錄下,然后以批次的方式加入集中的Management Data Warehouse內。
Resource Governor與資源管理:Resource Governor是SQL Server 2008新增的功能,即由定義需求可使用的CPU和記憶體資源,以保障服務器的資源不會被少數使用者過度使用。
設定不同的Pool/資源群組,規范該群組可用的資源,如CPU和Memory的比例。以保障資源不會被某些程序耗盡,而其他程序無資源可用。
僅企業版支持,以執行個體為單位。透過以T-SQL撰寫的自訂函數回傳所屬群組的名稱,將登入的連接(connection)賦予到與先定義好的 workload group,不是以特定的查詢語法為單位,在自訂函數內可以利用Host_Name、App_Name、SUSER_Name、Is_Member、 ConnectionProperty 等 T-SQL預設函數來定義商業邏輯,例如哪個應用程式建立的連接,就可使用高/低比例的資源。
如果沒有其它連接在第二個群組,則單一群組設定上雖不允許使用100%資源,然因為沒有其他比例分配的組群搶資源,則仍可以使用全部資源。
這可提升系統穩定性,但并沒有為服務用量計價的機制。
資料壓縮:
線上資料壓縮:針對資料表,分為Row 和 Page兩種壓縮。壓縮資料雖然較耗CPU資源,但提升資料載入記憶體與回存硬盤的效率中,寫入硬盤或傳遞到遠端服務器、存儲體都比較快,若壓縮率好,將 因節省了I/O時間而提升整體效率。備份的內容也可壓縮,節省硬盤資源,而壓縮率會與資料形態有關。
資料庫備份壓縮:
在記憶體備份的內容立即壓縮,這會消耗cpu的運算力,但寫入硬盤或傳遞到遠端存儲體都較快。
預設未啟動,而Mirroring 與 Log Shipping 會自動啟動壓縮交易記錄。
壓縮率視資料形態、資料庫本身是否有壓縮以為加密而不同。
只有Enterprise Edition 支援壓縮,但壓縮的備份可以restore到任意其它版本
Hot-Add CPU:服務器可不停機直接增加CPU,SQL Server 執行個體也可以立即采用該CPU。
開發方面
新資料形態,日期和時間形態分開,新增date、time、datetime2、datetimeoffset 等日期格式:
時間與日期分開,在利用「between…and…」取時間間隔時可方便許多,而datetimeoffset資料格式則可以讓你記錄與時區有關的時間資料。
另外,time、datetime2、datetimeoffset 等形態的資料長度可變動,讓你可在精確度與節省空間兩者間選擇。
舊的時間函數可以使用新的資料形態,并提供新的時間函數以取得更精確的時間。
由于大部分的應用日期和時間是分開的,精確使用date 和 time類型后,在存儲時可節省空間,索引也更有效率,且透過T-SQL 存取時,也省掉不必的格式運算。
新索引結構,設定索引的過濾條件(Filtered Index):
對符合Where 條件的值建立索引,例如:建立索引時限制欄位值不可NULL,則針對Sparse Column建出來的索引資料量就小很多。這可減輕于一般新增、修改、刪除資料時,因為要維護索引資料所造成的負荷。
因為是對資料子集建索引,整個資料量少,統計的精確度更高,則執行計劃的判讀將更為精確。
T-SQL 增加Merge語法:
與ANSI SQL 2006的Merge定義相容并加以延伸。
比較來源與目的資料后,以一句 Merge 語法同時完成新增、修改、刪除等動作。如同單一句 SQL 語法自動含在交易內,透過 Merge 語法所有更新的資料都包在一個交易內,
不像以往需明確定義交易,然后包含多句變更資料的 DML 語法。以往若要同步兩個資料表,可能同事要執行 Insert、Delete 和 Update 三句話,兩個資料表最少要 Join 比對三次,而 Merge 語法可以對比一次,就完成各種更新動作。
若用 UPDATE FROM JOIN 語法變更資料,若來源端有兩筆以上記錄對應到目的端,則以哪一筆記錄更新將無法推測,Merge 語法則直接回傳錯誤。
SQL Server 2008 與效能相關的議題就探討到此,希望對你熟悉SQL Server 2008有所幫助
關鍵字:SQL Server、管理、服務器、資料庫
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解