阿里云分布式关系型数据库原理是什么?

  • A+
       
阿里云通用优惠券
优惠券支持阿里云官网全部产品使用
立即领券

1、分库分表

DRDS 在后端将数据量较大的数据表水平拆分到后端的每个 RDS 数据库中,这些拆分到 RDS 中的数据库被称为分库,分库中的表称为分表。

拆分后,每个分库负责每一份数据的读写操作,从而有效的分散了整体访问压力。在系统扩容时,只需要水平增加分库的数量,并且迁移相关数据,就可以提高 DRDS 系统的总体容量。

DRDS 支持库级拆分,表级拆分和分库分表拆分,通过 DRDS DDL 语句指定,具体操作可参考建表语法和方式,以及 DDL 拆分函数说明。

拆分键

拆分键即分库/分表字段,因此分为分库键和分表键。拆分键暂时只支持单个字段。

  • 分库键:DRDS 根据分库键的值将数据水平拆分到后端的每一个 RDS 分库里。键值相同的数据,一定会位于同一个 RDS 数据库里。
  • 分表键:每一张逻辑表都可以定义自己的分表键,键值相同的数据,一定会位于同一个 RDS 数据表里。

阿里云分布式关系型数据库原理是什么?

注意:在执行带有 WHERE 条件的 UPDATE、DELETE、SELECT 语句时,如果 SQL 语句中没有使用拆分键,或者虽然指定了拆分键但是范围太广,会导致 SQL 语句被分发到所有分库上执行(即全表扫描),且执行结果会在 DRDS 中进行合并。全表扫描响应较慢,在高并发业务场景中应尽量避免使用。

2、SQL 路由

在分库分表模式下,DRDS 会根据拆分键(即拆分字段)以及 SQL 语义把 SQL 语句分发到底层的各个存储的分表进行执行。执行结束后,DRDS 会将各个分表上获取的数据合并,返回给用户。本文介绍在分库分表场景中 DRDS 执行 SQL 语句时的路由原理。DRDS 的数据拆分原理请参考文档分库分表。

拆分键

分库分表过程中,DRDS 按照指定的拆分键,加上特定的算法进行计算,根据计算结果将数据存储到对应的分表中。拆分键是 DRDS 中数据分布和 SQL 路由的凭证。

阿里云分布式关系型数据库原理是什么?

SQL 路由

当用户发起执行 SQL 语句的请求时,DRDS 会理解 SQL 语句的含义,然后按照拆分键的值和执行策略将 SQL 路由到对应分区进行执行,如下图所示:

阿里云分布式关系型数据库原理是什么?

数据合并

如果一个 SQL 语句被路由到多个分表执行,DRDS 会将各个分表返回的数据按照原始 SQL 语义进行合并,并将最终结果返回给用户。

阿里云分布式关系型数据库原理是什么?

3、DRDS 读写分离

在主实例的读请求较多、读压力比较大的时候,可以通过 DRDS 读写分离功能对读流量进行分流,减轻 RDS 主实例的读压力。

DRDS 的读写分离功能是对应用透明的设计。应用在不修改任何代码的情况下,只需要在 DRDS 控制台中调整读权重,即可将读流量按配置的比例在主 RDS 实例与多个 RDS 只读实例之间进行分流;写流量则全部到主实例,不做分流。

设置读写分离后,从主 RDS 实例读取的是强读,即实时强一致读,而只读实例上的数据是从主实例上异步复制的,存在毫秒级的延迟,因此从只读 RDS 实例读取的是弱读,属于非强一致性读。个别需要实时性、强一致性读的 SQL 可以通过 DRDS Hint 指定到主实例上执行。详细信息请参考读写分离 HINT。

非拆分模式下的读写分离

非拆分模式下,也可以用 DRDS 做读写分离,不做水平拆分。在 DRDS 控制台上创建 DRDS 数据库时,在选定一个 RDS 实例的情况下,可以选择将该 RDS 实例下的一个数据库直接引入 DRDS 做读写分离。此时不需要做数据迁移,但同时该 DRDS 数据库中的表也不能做水平拆分。

读写分离对事务的支持

读写分离仅对显式事务(即需要显式提交/回滚的事务)以外的读请求(即查询请求)有效,写请求和显式事务中的读请求(包括只读事务)均在主实例中执行,不会被分流到只读实例。

  • 属于读请求的常见 SQL 语句:SELECT、SHOW、EXPLAIN、DESCRIBE
  • 属于写请求的常见 SQL 语句:INSERT、REPLACE、UPDATE、DELETE、CALL

读写分离的具体操作请参考设置读写分离文档。

阿里云分布式关系型数据库原理是什么?

4、DRDS 平滑扩容

当逻辑库对应的底层存储已经达到物理瓶颈,需要进行水平扩展,比如磁盘余量接近30%,那么可以通过平滑扩容来改善。

注意:平滑扩容资源消耗高,执行扩容前请提工单寻求 DRDS 团队协助。

平滑扩容是一种水平扩容方式,既把分库平滑迁移到新添加的底层存储上。在实现上是通过增加 RDS 实例的数量来提升总体数据存储容量,将分库迁移到新增的 RDS 实例,从而降低单个 RDS 实例的处理压力。

具体操作步骤请参考平滑扩容文档。

阿里云分布式关系型数据库原理是什么?

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
阿里云服务器价格表_阿里云服务器租用_阿里云主机购买

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: