利用 ApsaraDB For SQL Server各版本高效而低廉地實現關鍵業務需求
利用 ApsaraDB For SQL Server各版本高效而低廉地實現關鍵業務需求
1. 什麼是SQL Server多版本
微軟的SQL Server除了不斷迭代的版本升級外,還有從功能差異上分為幾個不同的版本。 SQL Server 2012有企業版、商務智能版、標準版、開發版、Web版,當然還有一個入門版本Express。SQL Server2014/2016,隻有企業版、標準版、開發版、Web版,也有一個入門版本Express。這些版本的應用場景是不同的,這裏有詳細的解釋:
Enterprise
作為高級版本,SQL Server Enterprise 版提供了全麵的高端數據中心功能,性能極為快捷、虛擬化不受限製,還具有端到端的商業智能 ,可為關鍵任務工作負荷提供較高服務級別,支持最終用戶訪問深層數據。
Standard
SQL Server Standard 版提供了基本數據管理和商業智能數據庫,使部門和小型組織能夠順利運行其應用程序並支持將常用開發工具用於內部部署和雲部署,有助於以最少的 IT 資源獲得高效的數據庫管理。
Web
對於為從小規模至大規模 Web 資產提供可伸縮性、經濟性和可管理性功能的 Web 宿主和 Web VAP 來說,SQL Server Web 版本是一項總擁有成本較低的選擇。
Developer
SQL Server 2012 Developer 版支持開發人員基於 SQL Server 構建任意類型的應用程序。它包括 Enterprise 版的所有功能,但有許可限製,隻能用作開發和測試係統,而不能用作生產服務器。SQL Server Developer 是構建和測試應用程序的人員的理想之選。
Express 版
SQL Server 2012 Express 是入門級的免費數據庫,是學習和構建桌麵及小型服務器數據驅動應用程序的理想選擇。 它是獨立軟件供應商、開發人員和熱衷於構建客戶端應用程序的人員的最佳選擇。 如果您需要使用更高級的數據庫功能,則可以將 SQL Server Express 無縫升級到其他更高端的 SQL Server 版本。 SQL Server 2012 中新增了 SQL Server Express LocalDB,這是 Express 的一種輕型版本,該版本具備所有可編程性功能,但在用戶模式下運行,並且具有快速的零配置安裝和必備組件要求較少的特點。
從這些版本的應用場景看,很顯然,能夠用於產品環境的隻能是企業版、標準版和Web版本,然而我們在使用過程中,很少去關注版本的差異和成本的開銷,這是我們做架構選型或者數據庫選型需要考慮的問題。
2. SQL Server各版本引擎功能的差異與比較
SQL Server產品家族是非常豐富的,我們目前關注的是引擎功能相關特性和差異。以用戶的視角來看,我們主要關注性能和功能,可以從下麵幾個方向考慮(以SQL Server 2016 SP1各版本為例,ApsaraDB for SQL Server都是64位的版本)。
2.1 硬件支持與可擴展性
企業版無需考慮,什麼功能都支持,操作係統能力多大他就有可以擁有多大能力。我們把關注點放在Standard和Web版本,在CPU上,Standard最大支持的是24個邏輯核,內存支持到128G,Web支持的是16個邏輯核,內存支持到64G, 在我們的產品上,會有不同的產品規格來對應實例規格,總體來看,16G以下內存規格主要對應著Standard、Web版本。需要說明的是,內存限製方麵在Standard版本上,會看到超出128G的情形,如果出現請不要覺得奇怪,有一種可能是微軟可提供一種方式獲得超出128G的內存利用。數據庫大小支持都可以達到524PB,我想沒有一個生產線上敢用到這個量級,對於單庫,如果達到1~2T數據庫級別,無論從性能角度還是可維護性方麵就應該考慮從架構上拆分掉。
2.2 高可用性
高可用方麵,在架構上,目前提供是單機版本,所以日誌傳送,鏡像和AlwaysOn方麵的信息不再比較,從產品的角度,隻需要看看比較感興趣的幾個影響性能的問題(以SQL Server 2016 SP1各版本為例):
在備份的處理上,我們是流式進行,數據並不落地,Web不能夠壓縮,但備份時間可以靈活選擇,避免在備份過程中影響業務。聯機索引和架構更改,Standard/Web會受到影響,但我建議的最佳實踐是,如果你的操作是核心表並且數據量較大,不要在業務較高時間進行,不管你是否聯機操作,都是有風險的,一般會在晚上某個空閑時間點去做這類風險較高的操作,對於非核心表或者數據量較小的表,你什麼時候操作都是可以的。
2.3 數據庫係統可擴展性和性能
在數據庫引擎內核方麵,企業版、標準版和Web版本絕大多數都是支持的,因此沒有差異可以比較,有一個選項“已分區表並行度”不同。
內存中 OLTP 數據大小和列存儲段緩存限製為“規模限製”部分中的版本所指定的內存量。 最大並行度是有限的。 對於 Standard Edition,索引生成的進程並行度 (DOP) 限製為 2 DOP。已分區表並行度,其實很少用到了,因此基本上可以不用看。另外這些功能都是基於SQL Server 2016 SP1版本,之前的版本可能會不一樣,具體可以參考微軟官方文檔。
2.4 可管理和可編程
關於高級 R 集成是最新的技術,基本上沒有使用到,畢竟是做數據分析使用。SQL Profiler不支持,這個令人疑惑的,實際上你裝個通用的客戶端,也是可以利用SQL Profiler跟蹤性能等等事件。因此,這點你可以大可放心使用Web版本。
3. ApsaraDB for SQL Server多版本產品與選擇
3.1 為何我們要支持SQL Server多版本
在這之前,我們隻有SQL Server 2008 R2企業雙機版和SQL Server 2012 企業單機版,給用戶的選擇餘地是有限的。根據用戶的實際需求,很多用戶不僅從迭代大版本有需求,還需要從功能上進行選擇,原因很簡單,迭代高版本會支持更多特性,迭代高版本也可能會開放迭代低版本的高級版未開放的功能。再者,從用戶的規模和成本角度,需要高大上的企業版,也需要滿足個體戶的IT係統需求,而這些個體會,大多時候使用Web版本即可。正所謂蘿卜白菜,各有所愛,選擇適合自己的版本才是最重要的。
3.2 ApsaraDB for SQL Server 多版本架構
以用戶的視角來看ApsaraDB for SQL Server的架構,可以簡單描述一下多版本的架構形態,每個迭代版本和功能版本都是一樣的,此圖有助於用戶了解數據庫產品係統結構。
對用戶而言,能夠利用Web Console操作很多數據庫管控、運維、報警、性能監視。也可以通過OPENAPI操作數據庫實例。可利用管理客戶端輕鬆管理數據庫,基於虛擬機的數據庫服務權限開放是很寬鬆的,用戶可以利用這些權限解決性能和使用問題。
3.3 用戶從ApsaraDB for SQL Server多版本獲得的優勢與利益
3.3.1 即買即用
與傳統部署方式不同,ApsaraDB for SQL Server不需要用戶去部署網絡,安裝操作係統,安裝數據庫係統,調整參數,在這裏,這一切都變更簡單,您隻需要在Web Console確定一個Region一個可用區,一個實例規格等基本信息,然後就可以坐在那裏靜候15分鍾左右即可。您也可以使用OPENAPI 發起一個簡單的調用,也可以輕鬆實現自動化實例創建,一切將變得簡單可信賴。
3.3.2 輕鬆彈性資源
無論你購買的資源是否足夠,你都無需擔憂,ApsaraDB for SQL Server可以輕鬆為了實現資源的彈性升級和降級,你隻需要在Web Console點擊一下升級或者降級到什麼規格,便可做坐享其成。可以解決在你業務促銷過程中的升級與降級,既方便,亦可節約成本,一舉多得。
3.3.3 寬鬆的權限
ApsaraDB for SQL Server 從SQL Server 2012開始,權限較為寬鬆。你可以利用這些權限輕鬆管理數據庫和性能調優。相對於SQL Server 2008 R2,在權限上,你可以實現下列操作:
--創建更改和刪除數據庫
--創建更改和刪除登錄用戶
--KILL權限
--SQL Server Profile和數據庫性能優化向導
等等,以上你可以參考這個鏈接文檔:
https://yq.aliyun.com/articles/59347?spm=5176.8091938.0.0.fODKSi
最近新增:
-- 實例級別參數調整
你隻需要使用存儲過程sp_rds_configure指定配置選項即可,你不必去關心打開高級選項,如果設置的選項需要重啟,也會有提示。但目前支持的配置如下:
fill factor (%)
max worker threads
cost threshold for parallelism
max degree of parallelism
min server memory (MB)
max server memory (MB)
blocked process threshold (s)
-- 部分DBCC功能
你隻需要使用存儲過程sp_rds_dbcc_trace指定需要打開跟蹤標記即可,另外,觀察打開狀態是可以使用DBCC tracestatus(-1)。目前支持的跟蹤標記有:
1222,1204,1117,1118,1211,1224,3604
-- 實例內克隆數據庫
克隆數據庫更簡單了,使用存儲過程sp_rds_copy_database指定源數據庫和目的數據庫即可,數據克隆時間的多少與你數據庫大小密切相關,另外一點很重要,剩餘空間不能小於克隆數據庫大小的1.3倍。
上麵三個新特性,你可以使用下列腳本跑一下試試,另外,設置後要稍等片刻才生效:
USE master
GO
--database engine edtion
SELECT SERVERPROPERTY('edition')
GO
--create database
CREATE DATABASE testdb
GO
--set instance parameter
SELECT *
FROM sys.configurations
WHERE NAME = 'max degree of parallelism'
EXEC sp_rds_configure 'max degree of parallelism',0
WAITFOR DELAY '00:00:10'
SELECT *
FROM sys.configurations
WHERE NAME = 'max degree of parallelism'
--set dbcc
DBCC tracestatus(-1)
exec sp_rds_dbcc_trace 1222,1
WAITFOR DELAY '00:00:10'
DBCC tracestatus(-1)
GO
--copy database
EXEC sp_rds_copy_database 'testdb','testdb_copy'
SELECT *
FROM sys.databases
WHERE name IN ('testdb','testdb_copy')
SELECT
family_guid,database_guid,*
FROM sys.database_recovery_status
WHERE
DB_NAME(database_id) IN ('testdb','testdb_copy')
3.3.4 自動監控與告警
可以在Web Console台輕鬆配置你的告警項和查看性能監控,可以回溯曆史狀況,也可以設置監控頻率和設置報警規則,用戶可以獲得一下監控和性能指標:
MSSQL實例CPU使用率(占操作係統總數 %)
磁盤空間(單位MByte)
IOPS(單位:次/秒)
當前總連接數
SQLServer實例平均每秒鍾的輸入/流出流量。單位為KB
平均每秒事務數
平均每秒SQL語句執行次數
緩存命中率(%)
每秒檢查點寫入Page數
每秒登錄次數
平均每秒全表掃描次數
每秒SQL編譯
每秒鎖超時次數
每秒死鎖次數
每秒鎖等待次數
3.3.5 輕鬆運維
基本上,你可以不用自己去做太多運維的事,備份還原和恢複任意時間點,在Web Console都可以簡單設置完成。監控和報警也是比較齊全。重啟實例,收縮空間都是可以簡單完成。你隻需要關注自己的業務狀況即可。
3.3.6 靈活的成本與版本選擇
ApsaraDB for SQL Server將會推出至少5個新的版本,SQL Server 2012標準版、Web版本,SQL Server 2016企業版、標準版、Web版本。所以根據你的業務和成本開銷,可以靈活選擇產品,滿足自己的業務才是王道。
3.3.7 性價比為王
在做雲服務之前,我使用的都是企業版和標準本,從來都未考慮過Web版本,成本也隻是做一些比較粗略的估算。所以,有用戶就問了,我的業務怎麼選擇即滿足業務,又可以節省成本。先看看企業版和標準本以及Web版本許可費用就明白了。大致情況是標準版是Web的七八倍、企業版是標準版的三四倍。那怎麼選擇版本呢? 這裏提供幾個從數據庫角度的關鍵因素:用戶並發數、對數據庫的請求量、業務的複雜度、數據庫功能要求。數據庫功能要求是首先要確定的,比如有些功能可能在企業版才有,那麼幾乎你沒有選擇其他版本的餘地,如果沒有用到企業版,那麼可以在標準版和Web版本選擇。版本差異也有講到。而實際上,這是一個粗略的估算,更準確的評估方式是進行壓力測試,全鏈路測試,貴的不一定好,好的不一定貴,適合自己的場景才是最好的。在和用戶的溝通中,發現很多場景完全是可以使用Web版本來做解決方案的。特別是ISV提供商針對不同細分領域的產品,不僅從數據庫種類可以選擇,還可以從功能版本上去選擇,總之,一切都是以性價比為王。對於ApsaraDB for SQL Server產品,後續我們會陸續提供跨功能版本升級服務,那麼即使你的業務變化增長較快,也可以輕鬆向更高級的功能版本升級,一切都是因為有雲服務,所以才變得如此簡單。
最後更新:2017-08-25 16:02:24