阿里云RDS for SQL Server使用的一些最佳实践

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:
了解RDS的概念
这也是第一条,也是最重要的一条,在使用某项产品和服务之前,首先要了解该产品或服务的功能与限制,就像你买一个冰箱或洗衣机,通常也只有在阅读完说明书之后才能利用起来它们的所以功能,以及使用时的注意事项,RDS for SQL Server也是如此。

RDS for SQL Server与传统的自建机房提供SQL Server的主要不同就是用户所需负责数据库的模块多与少的问题,自建SQL Server与阿里云RDS for SQL Server所需负责的部分图1所示:

职责区分

当然,便捷的代价除了成本之外,另外就是限制,这就类似于用一些基础的工具可以做各类工作,但专用的工具可以高效完成特定工作一样,RDS更类似于专用的工具,

限制带来的优势
限制的目的是由于这部分工作由阿里云统一去做了,数据库作为服务提供给使用者,因此使用者就没有数据库以下(操作系统、存储等)部分的权限,数据库作为服务提供有以下几点优势:

简单
最大的好处自然是简单,无需再关注SQL Server的安装、配置、监控、报警、备份、高可用等工作,这些工作往往是需要比较专业的人士进行长时间的付出才能建立一个完整的体系,由于数据库往往是整个系统的核心部分,这些工作如果运维人员的水平问题或误操作往往还会带来比较严重的后果。 而在阿里云下面,有一套完整的云体系负责所有这些工作,以简单直观的界面就能够将这些信息展示出来。如图2,图3所示。

标准化&最佳实践化
由阿里云负责数据库基础配置的运维可以使得数据库运维标准化,通常在SQL Server安装后都需要进行一些诸如:最大并行度、文件增长、tempdb个数、操作系统权限、磁盘IO分布等等很多参数的配置,这些参数在很多情况下会对SQL Server的性能与可用性产生影响,而很多企业并没有DBA或专业的数据库运维人员,因此往往不能正确配置这些参数。 而阿里云则可以通过标准化将这些参数在实例生成时就进行配置,这这些配置都是经过大量实践符合99%数据库的最佳实践,因此可以避免很多由于配置不当而产生的数据库问题。

高可用
目前为止,从高可用性角度来看,阿里云RDS For SQL Server分为两个版本,一个是双机版,该版本底层使用SQL Server镜像(Mirror)实现高可用,因此可以实现极高的可用性,即使出现硬件层面的故障,也能实现秒级的切换。 而对于单机版的SQL Server,高可用技术更像是虚拟化层面的漂移,当发生故障时,SQL Server从一台宿主机到另外的宿主机,因此这种情况下是分钟级。 可以根据业务类型的重要程度与成本的预算进行选择。但推荐尽量使用双机版。

利用阿里云提供的工具
RDS的一个优势是已经对一些常用的操作进行了封装,而这些操作如果手工完成通常会费时费力,而且容易出错。比如在数据库出现问题时将数据库还原到某一个时间点,如果是DBA手工操作则需要完整的备份体系存在的情况下,按照备份顺序进行还原,而在阿里云上都是一键操作,关于常用流程的使用可以看本篇文章的后半段。

善用弹性扩展
云数据库的一个很大的优势是弹性扩展,意味着可以按需进行扩展,一般以下几种情况比较适宜考虑弹性方面的功能:

业务增长:随着业务增长动态扩容数据库
业务高峰:比如双十一等大促临时提升服务器规格,在业务低峰期再进行服务器规格降级
临时使用:比如申请一台服务器进行测试,这个过程使用云数据库不但避免了麻烦的数据库安装部署成本,还能在测试完成后关闭服务器以节约成本。
了解权限体系
上面说了,由于RDS是PAAS层的服务,所以需要让渡一部分权限,但其实绝大多数常用权限还是可以使用的,可以使用命令fnmypermission函数了解当前登录账号所拥有的权限,如图:

权限体系

 
设置可维护时间段
实际上RDS底层是有一些运维操作的,在运维操作时可能有闪断出现,现在可以选择接受的运维时间段,这可以根据业务来,默认是2:00am-6:00 am,这个时间适用于绝大多数场景,但某些场景比如海外业务,或者游戏业务晚上可能反而是高峰期,因此应该根据业务正确设置该值。

利用临时实例
RDS有一个非常好的功能是临时实例,在控制台如图所示:

chuangjianlinshishili

图 .创建临时实例功能linshishili2图 .指定从某个时间点创建临时实例。

该功能可以从指定时间点的备份完全克隆出来一个实例,可以使用该实例进行下面的工作:

测试:可以完全克隆出来一个数据副本,用于测试,而不影响线上生产环境的数据以及压力
数据找回:如果有误操作等,可以利用线上生产环境克隆出一份数据,然后手动找回数据
开发环境:可以通过临时实例作为软件开发环境,从而不再需要手动创建测试数据,开发过程中有数据支持也可以更容易及时发现BUG

最牛逼的还是这个功能是完全免费的。

利用内置的系统存储过程完成一些undocument操作
rds在限制权限之外还通过一套内部存储过程可以完成一些“非标准”操作,这些存储过程在master数据库下,下面是当前版本所支持的存储过程

[dbo].[sprdsaddlinkedserver](添加链接服务器)
[dbo].[sprdsconfigure](配置服务器级别的参数)
[dbo].[sprdscopy_database](复制数据库)
[dbo].[sprdsdbcc_trace](启用跟踪标记)
[dbo].[sprdsreaderrorlogs](读取SQL Server错误日志)
[dbo].[sprdssetdbonline](将数据库状态改为Online)

比如,我们可以通过下面命令将服务器的“并行开销阈值”改为50。

[dbo].[sp_rds_configure] 'cost threshold for parallelism','50'
 

 
考虑RDS底层架构的影响
由于RDS for Server双机版底层使用的是SQL Server 镜像,且为高安全模式,意味着所有的数据更新(插入、删除、更新)全部需要同步到镜像端,因此如果短时间内有大量的数据更新操作时,考虑降低每次事务的大小,比如一次删除100W条数据的SQL可以写为循环删除,在每次循环中加入等待时间。

 DELETE 
   FROM 表
 where 日期<'2015-1-1'  
 

 
可以替换为:

复制代码
DECLARE @r INT;
  
SET @r=1;
 
WHILE @r>0
BEGIN

 
  DELETE TOP(5000)
   FROM 表
 where 日期<'2015-1-1'
 
  SET @r=@@ROWCOUNT;
 
 wait for dealy '00:00:00:01'
复制代码
 

 
小结
在使用阿里云RDS for SQL Server时,要考虑PAAS层的结构与限制 ,RDS提供大量功能的同时,也需要让渡一些权限,了解底层原理最大化利用RDS提供的功能并避免限制才是使用的最佳实践。

分类: 阿里云RDS


本文转自CareySon博客园博客,原文链接:http://www.cnblogs.com/CareySon/p/best-parctice-for-aliyun-rds-for-sql-server.html如需转载请自行联系原作者
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
1天前
|
SQL 存储 数据处理
实时计算 Flink版产品使用合集之flink-connector-mysql-cdc 和 flink-sql-connector-mysql-cdc有什么区别
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
11 1
|
1天前
|
SQL 缓存 Java
实时计算 Flink版产品使用合集之flink-connector-mysql-cdc 和 flink-connector-sqlserver-cdc 这两个CDC连接器只能选择其中一个使用吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
23 0
|
1天前
|
SQL 关系型数据库 MySQL
MYSQL根据查询结果删除sql 去除重复id 新增对比前一条与后一条数据 去重3种方法​ 窗口函数
MYSQL根据查询结果删除sql 去除重复id 新增对比前一条与后一条数据 去重3种方法​ 窗口函数
|
2天前
|
SQL 存储 关系型数据库
【MySQL】SQL 优化
【MySQL】SQL 优化
20 0
|
2天前
|
安全 关系型数据库 虚拟化
WIndows Server 远程桌面服务—RDS
WIndows Server 远程桌面服务—RDS
|
2天前
|
SQL 关系型数据库 MySQL
【MySQL系列笔记】常用SQL
常用SQL分为三种类型,分别为DDL,DML和DQL;这三种类型的SQL语句分别用于管理数据库结构、操作数据、以及查询数据,是数据库操作中最常用的语句类型。 在后面学习的多表联查中,SQL是分析业务后业务后能否实现的基础,以及后面如何书写动态SQL,以及完成级联查询的关键。
204 6
|
2天前
|
SQL 关系型数据库 MySQL
【MySQL-4】简述SQLの通用语法及4种基本语句介绍(DDL/DML/DQL/DCL)
【MySQL-4】简述SQLの通用语法及4种基本语句介绍(DDL/DML/DQL/DCL)
|
2天前
|
SQL 存储 关系型数据库
【MySQL系列笔记】SQL优化
SQL优化是通过调整数据库查询、索引、表结构和配置参数等方式,提高SQL查询性能和效率的过程。它旨在减少查询执行时间、减少系统资源消耗,从而提升数据库系统整体性能。优化方法包括索引优化、查询重写、表分区、适当选择和调整数据库引擎等。
233 3
|
2天前
|
SQL 关系型数据库 MySQL
MySQL SQL error: #1271 - Illegal mix of collations for operation ‘UNION‘
MySQL SQL error: #1271 - Illegal mix of collations for operation ‘UNION‘
|
2天前
|
SQL 关系型数据库 MySQL
【MySQL】:探秘主流关系型数据库管理系统及SQL语言
【MySQL】:探秘主流关系型数据库管理系统及SQL语言
27 0