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

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: #了解RDS的概念 这也是第一条,也是最重要的一条,在使用某项产品和服务之前,首先要了解该产品或服务的**功能**与**限制**,就像你买一个冰箱或洗衣机,通常也只有在阅读完说明书之后才能利用起来它们的所以功能,以及使用时的注意事项,RDS for SQL Server也是如此。 RDS for SQL Server与传统的自建机房提供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手工操作则需要完整的备份体系存在的情况下,按照备份顺序进行还原,而在阿里云上都是一键操作,关于常用流程的使用可以看本篇文章的后半段。

善用弹性扩展

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

  1. 业务增长:随着业务增长动态扩容数据库
  2. 业务高峰:比如双十一等大促临时提升服务器规格,在业务低峰期再进行服务器规格降级
  3. 临时使用:比如申请一台服务器进行测试,这个过程使用云数据库不但避免了麻烦的数据库安装部署成本,还能在测试完成后关闭服务器以节约成本。

了解权限体系

上面说了,由于RDS是PAAS层的服务,所以需要让渡一部分权限,但其实绝大多数常用权限还是可以使用的,可以使用命令fn_my_permission函数了解当前登录账号所拥有的权限,如图:

权限体系

设置可维护时间段

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

利用临时实例

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

chuangjianlinshishili

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

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

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

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

利用内置的系统存储过程完成一些undocument操作

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

  • [dbo].[sp_rds_add_linked_server](添加链接服务器)
  • [dbo].[sp_rds_configure](配置服务器级别的参数)
  • [dbo].[sp_rds_copy_database](复制数据库)
  • [dbo].[sp_rds_dbcc_trace](启用跟踪标记)
  • [dbo].[sp_rds_read_error_logs](读取SQL Server错误日志)
  • [dbo].[sp_rds_set_db_online](将数据库状态改为Online)

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

   [dbo].[sp_rds_configure] 'cost threshold for parallelism','50'
AI 代码解读

考虑RDS底层架构的影响

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

 DELETE 
   FROMwhere 日期<'2015-1-1'  
AI 代码解读

可以替换为:

DECLARE @r INT;
  
SET @r=1;
 
WHILE @r>0
BEGIN

 
  DELETE TOP(5000)
   FROMwhere 日期<'2015-1-1'
 
  SET @r=@@ROWCOUNT;
 
 wait for dealy '00:00:00:01'
 
 
AI 代码解读

小结

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

相关实践学习
使用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
目录
打赏
0
0
0
0
9
分享
相关文章
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
【YashanDB知识库】如何将mysql含有group by的SQL转换成崖山支持的SQL
本文探讨了在YashanDB(崖山数据库)中执行某些SQL语句时出现的报错问题,对比了MySQL的成功执行结果。问题源于SQL-92标准对非聚合列的严格限制,要求这些列必须出现在GROUP BY子句中,而SQL:1999及更高版本允许非聚合列直接出现在选择列中。YashanDB和Oracle遵循SQL-92标准,因此会报错。文章提供了两种解决方法:使用聚合函数处理非聚合列,或将GROUP BY与ORDER BY拆分为两层查询。最后总结指出,SQL-92标准更为严谨合理,建议开发者遵循此规范以避免潜在问题。
MySQL的架构与SQL语句执行过程
MySQL架构分为Server层和存储引擎层,具有高度灵活性和可扩展性。Server层包括连接器、查询缓存(MySQL 8.0已移除)、分析器、优化器和执行器,负责处理SQL语句;存储引擎层负责数据的存储和读取,常见引擎有InnoDB、MyISAM和Memory。SQL执行过程涉及连接、解析、优化、执行和结果返回等步骤,本文详细讲解了一条SQL语句的完整执行过程。
98 3
基于SQL Server / MySQL进行百万条数据过滤优化方案
对百万级别数据进行高效过滤查询,需要综合使用索引、查询优化、表分区、统计信息和视图等技术手段。通过合理的数据库设计和查询优化,可以显著提升查询性能,确保系统的高效稳定运行。
82 9
【YashanDB 知识库】如何将 mysql 含有 group by 的 SQL 转换成崖山支持的 SQL
在崖山数据库中执行某些 SQL 语句时出现报错(YAS-04316 not a single-group group function),而这些语句在 MySQL 中能成功执行。原因是崖山遵循 SQL-92 标准,不允许选择列表中包含未在 GROUP BY 子句中指定的非聚合列,而 MySQL 默认允许这种操作。解决办法包括:使用聚合函数处理非聚合列或拆分查询为两层,先进行 GROUP BY 再排序。总结来说,SQL-92 更严格,确保数据一致性,MySQL 在 5.7 及以上版本也默认遵循此标准。
MySQL原理简介—10.SQL语句和执行计划
本文介绍了MySQL执行计划的相关概念及其优化方法。首先解释了什么是执行计划,它是SQL语句在查询时如何检索、筛选和排序数据的过程。接着详细描述了执行计划中常见的访问类型,如const、ref、range、index和all等,并分析了它们的性能特点。文中还探讨了多表关联查询的原理及优化策略,包括驱动表和被驱动表的选择。此外,文章讨论了全表扫描和索引的成本计算方法,以及MySQL如何通过成本估算选择最优执行计划。最后,介绍了explain命令的各个参数含义,帮助理解查询优化器的工作机制。通过这些内容,读者可以更好地理解和优化SQL查询性能。
MySQL进阶突击系列(07) 她气鼓鼓递来一条SQL | 怎么看执行计划、SQL怎么优化?
在日常研发工作当中,系统性能优化,从大的方面来看主要涉及基础平台优化、业务系统性能优化、数据库优化。面对数据库优化,除了DBA在集群性能、服务器调优需要投入精力,我们研发需要负责业务SQL执行优化。当业务数据量达到一定规模后,SQL执行效率可能就会出现瓶颈,影响系统业务响应。掌握如何判断SQL执行慢、以及如何分析SQL执行计划、优化SQL的技能,在工作中解决SQL性能问题显得非常关键。
MySQL原理简介—1.SQL的执行流程
本文介绍了MySQL驱动、数据库连接池及SQL执行流程的关键组件和作用。主要内容包括:MySQL驱动用于建立Java系统与数据库的网络连接;数据库连接池提高多线程并发访问效率;MySQL中的连接池维护多个数据库连接并进行权限验证;网络连接由线程处理,监听请求并读取数据;SQL接口负责执行SQL语句;查询解析器将SQL语句解析为可执行逻辑;查询优化器选择最优查询路径;存储引擎接口负责实际的数据操作;执行器根据优化后的执行计划调用存储引擎接口完成SQL语句的执行。整个流程确保了高效、安全地处理SQL请求。
277 76
MySQL/SqlServer跨服务器增删改查(CRUD)的一种方法
通过上述方法,MySQL和SQL Server均能够实现跨服务器的增删改查操作。MySQL通过联邦存储引擎提供了直接的跨服务器表访问,而SQL Server通过链接服务器和分布式查询实现了灵活的跨服务器数据操作。这些技术为分布式数据库管理提供了强大的支持,能够满足复杂的数据操作需求。
204 12

热门文章

最新文章

推荐镜像

更多