利用ApsaraDBForSQLServer各版本高效而低廉地實現關鍵業務需求
利用 ApsaraDB For SQL Server各版本高效而低廉地實現關鍵業務需求
產品頁面:https://promotion.aliyun.com/ntms/act/sqlserverweb.html
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產品,後續我們會陸續提供跨功能版本升級服務,那麼即使你的業務變化增長較快,也可以輕鬆向更高階的功能版本升級,一切都是因為有云服務,所以才變得如此簡單。
相關文章
- 多引數路由中巧妙利用自定義鍵名實現需求路由
- 如何優雅而高效地使用Matplotlib實現資料視覺化視覺化
- 如何高效利用 GitHub 關鍵字進行搜尋Github
- 方案解讀 | 如何高效而經濟地實現 Kubernetes 多租戶功能?
- 如何實現高效地IT服務管理
- ORACLE各個版本系統安裝需求Oracle
- 怎麼用最短時間高效而踏實地學習 Python?Python
- 怎麼用最短時間高效而踏實地學習Python?Python
- 各類關鍵字
- 關於Undo地實現
- 騰訊地圖Flutter業務實踐——地圖SDK Flutter外掛實現(一)地圖Flutter
- IT關鍵業務推動者
- 邦芒職場:職場中實現高效而“懶惰”的方法
- 高亮:單關鍵詞、多關鍵詞、多組多關鍵詞,從簡單到複雜實現滿足多方面需求的頁面關鍵詞高亮
- 聯宇集團:如何利用CRM實現客戶管理精細化與業務流程高效協同
- SOA重點在於業務改造而不是程式碼再利用
- 實現算力服務普適普惠高效利用
- 企業如何利用安全運營來實現業務現代化
- 關鍵路徑JS實現JS
- 利用百度地圖實現支付寶 “到位” 功能(地圖模式)地圖模式
- 利用orm 在業務程式碼無感知下,實現實現分庫分表ORM
- .NET 8 中利用 MediatR 實現高效訊息傳遞
- 高效實現聚水潭·奇門售後單整合到MySQL的關鍵技術MySql
- 真實業務環境-需求分析思路(一)
- 真實業務環境-需求分析思路(二)
- 利用HTML5,無JS實現各種互動效果HTMLJS
- Java中的各種關鍵字Java
- Pig 實現關鍵詞匹配
- 實現 MongoDB 外來鍵關聯MongoDB
- JavaFx 關鍵字高亮文字實現Java
- javascript實現關鍵字高亮(轉)JavaScript
- Java Web Start 實現關鍵 (轉)JavaWeb
- 自述:如何利用線上協作軟體實現高效辦公
- 【實驗】【SQL】排序與rownum的關係暨利用rownum處理一實際需求SQL排序
- 利用swagger和API Version實現api版本控制SwaggerAPI
- Linux各個版本相關說明Linux
- 使用延遲關聯實現高效分頁
- 和開發人員討論一個業務需求和簡單實現