开发者社区 问答 正文

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
读写分离的具体操作请参考设置读写分离文档。

读写分离

展开
收起
猫饭先生 2017-10-30 10:15:01 3080 分享 版权
阿里云 AI 助理回答

阿里云的分布式关系型数据库服务(DRDS)的读写分离功能,是为了解决主数据库实例在高读取压力环境下性能瓶颈的问题。以下是关于DRDS读写分离的一些关键点和操作建议:

基本原理与优势

  • 流量分流:通过配置,可以将读请求按照设定的比例分配到主RDS实例和多个只读RDS实例上,而写请求则全部由主实例处理。这样能显著减轻主实例的压力,提高整体系统的读取能力。
  • 透明性:对应用程序透明,无需修改代码,仅需在DRDS控制台调整读权重即可实现读流量的灵活管理。
  • 数据一致性:主实例提供强一致性的实时读取,而只读实例上的数据存在毫秒级延迟,适用于非强一致性要求的场景。

非拆分模式下的应用

  • 即使不进行数据库表的水平拆分,也可以利用DRDS实现单个RDS实例的读写分离,适合需要简单读写分离而不涉及复杂分片逻辑的场景。

事务支持

  • 读写分离主要针对非事务性查询(SELECT等),显式事务中的所有操作(包括读写)都会被路由到主实例执行,以保证事务的ACID特性。

SQL指令区分

  • 明确哪些SQL属于读操作(如SELECT),哪些属于写操作(如INSERT、UPDATE),有助于理解哪些请求会被分流。

操作指南

  • 设置读写分离:在DRDS控制台上,用户可以根据实际需求调整读权重,实现读流量的有效管理和负载均衡。
  • 使用Hint指定执行节点:对于需要确保强一致性的读请求,可以通过DRDS Hint来指定SQL语句在主实例上执行。

注意事项

  • 数据延迟:虽然只读实例提高了读取效率,但开发者需要注意数据同步的延迟问题,特别是在对数据实时性要求极高的应用场景中。
  • 资源规划:合理配置只读实例的数量和规格,避免资源浪费或不足。

综上所述,阿里云DRDS的读写分离功能为企业提供了高效、灵活的数据库读取解决方案,尤其适合大规模互联网应用和服务,能够有效提升系统的扩展性和响应速度。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答