- 红黑树不适合存储大量数据,因为树的高度会过高。
- 主从同步:binlog
- 读多写少
- 主库:写
show master status
- 从库:读
show master status\G
- I/O Thread: 拷贝 binlog
- SQL Thread: 读取 binlog 重放
- 主库:写
- 强制路由
- 由于主从同步延迟,会导致读从库时不能读到最新数据
- 方式一:注解
- atlas:
/*master*/ select * from table ...
- atlas:
数据水平/垂直切分到不同的数据库实例中。
- 分库:按业务、数据规模将不同表分到各自的数据库里。
- 分表:将访问频率不同的字段分开成不同的表。
优点:
- 拆分后业务清晰
- 数据维护简单
缺点:
- 如果单表数据量大,读写压力依然很大
- 部分业务无法直接 join,要在应用层做关联
优点:
- 单表/单库的数据量可控
- 切分的表结构相同,应用层改动少
- 提高系统的稳定性和负载能力
缺点:
- 扩容较难
- 取模:模数变化时,需要迁移数据
- 拆分规则难以抽象
- 部分业务难以 join
- 分布式事务
- 分布式全局唯一 ID
- 应用层:性能比代理层好,可以跨数据库
- 代理层:跨语言能力突出
- Mycat:已经逐渐衰落
- Atlas:已经逐渐衰落
- MySQL-Proxy
- ShardingSphere