阿里DRDS基本原理

DRDS 分库分表


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

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

DRDS 支持库级拆分,表级拆分和分库分表拆分,通过 DRDS DDL 语句指定,具体操作可参考快速开始

拆分键

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

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

DRDS SQL 路由

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

拆分键

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

SQL 路由

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

数据合并

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

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

DRDS 平滑扩容

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

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

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

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


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值