利用 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 硬件支持与可扩展性

SQL server2012各版本区别 sqlserver2012各版本价格_SQL server2012各版本区别

企业版无需考虑,什么功能都支持,操作系统能力多大他就有可以拥有多大能力。我们把关注点放在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各版本为例):

SQL server2012各版本区别 sqlserver2012各版本价格_数据库_02

在备份的处理上,我们是流式进行,数据并不落地,Web不能够压缩,但备份时间可以灵活选择,避免在备份过程中影响业务。联机索引和架构更改,Standard/Web会受到影响,但我建议的最佳实践是,如果你的操作是核心表并且数据量较大,不要在业务较高时间进行,不管你是否联机操作,都是有风险的,一般会在晚上某个空闲时间点去做这类风险较高的操作,对于非核心表或者数据量较小的表,你什么时候操作都是可以的。

2.3 数据库系统可扩展性和性能

在数据库引擎内核方面,企业版、标准版和Web版本绝大多数都是支持的,因此没有差异可以比较,有一个选项“已分区表并行度”不同。

SQL server2012各版本区别 sqlserver2012各版本价格_操作系统_03

内存中 OLTP 数据大小和列存储段缓存限制为“规模限制”部分中的版本所指定的内存量。 最大并行度是有限的。 对于 Standard Edition,索引生成的进程并行度 (DOP) 限制为 2 DOP。已分区表并行度,其实很少用到了,因此基本上可以不用看。另外这些功能都是基于SQL Server 2016 SP1版本,之前的版本可能会不一样,具体可以参考微软官方文档。

2.4 可管理和可编程

SQL server2012各版本区别 sqlserver2012各版本价格_数据库_04

关于高级 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的架构,可以简单描述一下多版本的架构形态,每个迭代版本和功能版本都是一样的,此图有助于用户了解数据库产品系统结构。

SQL server2012各版本区别 sqlserver2012各版本价格_数据库_05

对用户而言,能够利用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和数据库性能优化向导

最近新增:
-- 实例级别参数调整
你只需要使用存储过程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产品,后续我们会陆续提供跨功能版本升级服务,那么即使你的业务变化增长较快,也可以轻松向更高级的功能版本升级,一切都是因为有云服务,所以才变得如此简单。