温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

什么是数据库读写分离

发布时间:2026-10-19 01:23:46 来源:亿速云 阅读:98 作者:小樊 栏目:数据库

数据库读写分离是一种常用的数据库架构优化方案,用来提升系统的性能和可扩展性。

一、基本概念

  • 写操作(Insert / Update / Delete):发送到 主库(Master)
  • 读操作(Select):发送到 从库(Slave / Replica)

主库和从库之间通过数据复制机制(如 MySQL 的 binlog 复制)保持数据同步。


二、为什么要用读写分离?

  1. 减轻主库压力
    • 多数系统“读多写少”,把读请求分散到多个从库,主库只负责写。
  2. 提高并发能力
    • 从库可以水平扩展,支撑更多读请求。
  3. 提升系统可用性
    • 主库故障切换时,从库仍可提供读服务。

三、典型架构示意

        写请求
应用 ─────────> 主库(Master)
 │
 │ 读请求
 ├──────────> 从库1(Slave)
 ├──────────> 从库2(Slave)
 └──────────> 从库3(Slave)

四、实现方式

  1. 应用层控制
    • 代码中明确指定数据源(如 MyBatis + Spring)
  2. 中间件实现
    • 使用 Proxy(如 MyCat、ShardingSphere、ProxySQL)
  3. ORM 框架支持
    • 如 Spring + AbstractRoutingDataSource

五、需要注意的问题

  1. 数据延迟(主从同步延迟)
    • 刚写入的数据可能读不到(最终一致性)
  2. 事务问题
    • 事务内通常只能用主库,避免读写不一致
  3. 写后读场景
    • 如“下单后立刻查订单”,建议强制走主库

六、适用场景

✅ 读多写少
✅ 并发较高
✅ 对实时一致性要求不是极强

❌ 强一致交易系统(如银行核心)

如果你愿意,我也可以用 Spring Boot 示例 或 MySQL 主从搭建 来具体说明。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手