基本原理
在主实例的读请求较多、读压力比较大的时候,可以通过 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
读写分离的具体操作请参考设置读写分离文档。
读写分离
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。