阿里云RDS for SQL Server使用的一些最佳实践
了解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有一个非常好的功能是临时实例,在控制台如图所示:
图 .创建临时实例功能图 .指定从某个时间点创建临时实例。
该功能可以从指定时间点的备份完全克隆出来一个实例,可以使用该实例进行下面的工作:
- 测试:可以完全克隆出来一个数据副本,用于测试,而不影响线上生产环境的数据以及压力
- 数据找回:如果有误操作等,可以利用线上生产环境克隆出一份数据,然后手动找回数据
开发环境:可以通过临时实例作为软件开发环境,从而不再需要手动创建测试数据,开发过程中有数据支持也可以更容易及时发现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',''
考虑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 for SQL Server使用的一些最佳实践的更多相关文章
- 阿里云RDS for SQL Server测试吐槽
最近测试了一下阿里云RDS for SQL Server,有些设计简直就是反人类,让人不得不吐槽一番. 1:控制台创建数据库时,数据库名不能包含大小字母. 如上截图所示,数据库名称不能包含大写字母,好 ...
- 强强联合 阿里云 RDS for SQL Server 与 金蝶 K/3 WISE 产品实现兼容适配
强强联合 阿里云 RDS for SQL Server 与 金蝶 K/3 WISE 产品实现兼容适配,原K/3 WISE用户通过简单配置就可以无缝搭配RDS SQL Server使用,不需再费时费力自 ...
- 使用阿里云RDS for SQL Server性能洞察优化数据库负载-初识性能洞察
简介 数据库性能调优通常需要较高数据库水平,并伴随较多的前期准备工作,比如收集各种性能基线.不同种类的性能指标.慢SQL日志等,这通常费时费力且效果一般,当面对多个数据库时总体拥有成本会大幅增加.今天 ...
- 阿里云RDS数据库sql server 导入数据并添加作业小结
在阿里云购买ECS服务器和RDS数据库时,要注意网络类型要一致,最好都是VPC,否则ECS不能在内网访问RDS,只能从外网访问:在RDS控制台左侧,数据库安全性的IP白名单中添加ECS外网IP:在数据 ...
- 阿里云RDS for SQL Serrver关于权限的一个严重Bug
阿里云RDS for SQL Server的账号管理有不少小Bug,而且有一个很严重的Bug:任何普通账号,都能创建数据库.注意,我这里是说任意普通账号,任意任意普通账号!任意任意普通账号!重要的事情 ...
- SQL Server系统数据库备份最佳实践
原文:SQL Server系统数据库备份最佳实践 首先了解主要的系统数据库: 系统数据库 master 包含登录信息和其他数据库的核心信息 msdb 存储作业.操作员.警报.备份还原历史.数据库邮件信 ...
- Navicat Premium 12 如何连接阿里云虚拟主机SQL Server 数据库
这个是一台 阿里云购买云虚拟主机!密码已经重置完毕,现在我们 需要知道 数据连接的地址,数据库名,帐号以及密码. 根据不同的运营商 选择 这里我们选择阿里云 云数据库 SQL Server版本 填写 ...
- 亿级SQL Server运维的最佳实践PPT分享
这次分享是我在微软的一次分享,关于SQL Server运维最佳实践的部分,由于受众来自不同背景,因此我让分享在一个更加抽象的角度进行,PPT分享如下: 点击这里进行下载
- SQL Server Integration Services SSIS最佳实践
SQL Server Integration Services Best Practices Tips https://www.mssqltips.com/sql-server-tip-categor ...
随机推荐
- 基于C#的BarCode 39实现
一.39条码简介 39码是1974年发展出来的条码系统,是一种可供使用者双向扫瞄的分散式条码,也就是说相临两资料码之间,必须包含一个不具任何意义的空白(或细白,其逻辑值为0),且其具有支援文字的能力, ...
- S2_SQL_第一章
第一章:数据库的设计 1.1:为什么需要规范数据库的设计 1.1.1:什么是数据库设计 数据库设计就是将数据中的数据实体及这些数据实体之间的关系,进行规范和结构的过程. 1.1.2:数据库设计非常重要 ...
- XML读取信息并显示
这个类命名叫Message.cs namespace Common { public class Message { /// <summary> /// 信息编号 /// </sum ...
- 关于Websockets问题:
Websockets是一种与服务器进行全双工,双向通信的信道,它不使用http协议,他有自己的协议即自定义协议,ws协议:它的安全协议为wss协议.这种协议专门为快速传输小数据而设计的.对服务其有一 ...
- Collection和Map的默认扩容参数
初始大小:调用无参构造函数时默认的容量 加载因子:超过 (当前容量*加载因子) 时会进行扩容 扩容因子:扩容时增加的容量为 (当前容量*扩容因子) 容器 初始容量 ...
- 热门开源项目:Guns-后台管理系统
Guns基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springmvc + shiro + mybatis-plus + beetl!Guns项目代码简洁,注释丰富,上手容易,同时 ...
- 【转载】WAI-ARIA无障碍网页应用属性完全展示
文章转载自 张鑫旭-鑫空间-鑫生活 http://www.zhangxinxu.com/wordpress/ 原文链接:http://www.zhangxinxu.com/wordpress/?p=2 ...
- 张高兴的 Windows 10 IoT 开发笔记:RTC 时钟模块 DS3231
GitHub:https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/DS3231 注意:不包含闹钟设置
- JDBC工具类实例
本文以讲解用单利模式实现一个简单的JDBC实用工具类JDBC连接的四个基本步骤:1.加载相应数据库驱动2.建立相应数据库连接3.构建Statement语句,即增删改查SQL语句4.执行Statemen ...
- BZOJ-1045-[HAOI2008] 糖果传递(中位数原理)
Description 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. Input 第一行一个正整数nn<=1'000'000,表示小朋友的个 ...