分库分表
一、使用场景
1、水平分库分表
特点:将数据按行进行拆分,不同的行存储在不同的库或表中
使用场景:
1.1、 大数据量读写:
- 单个表的数据量过大,导致查询、插入、更新等操作变慢。
1.2、 高并发:
- 增加系统的并发处理能力,通过多库多表分担负载,减少锁竞争。
1.3、 扩展性:
- 系统需要能够随时扩容,以应对快速增长的数据量和访问量。
例子:用户表按用户ID分片,将不同用户的数据分布到不同的表中。
2、垂直分库分表
特点:将表按字段进行拆分,不同的字段存储在不同的库或表中。
使用场景:
2.1、 字段较多:
- 单个表的字段过多,影响数据库性能,比如在检索或索引时性能下降。
2.2、业务逻辑明确:
- 表中不同字段由不同的业务模块使用,分开存储提高访问效率。
2.3、 安全或隐私需求:
- 将敏感信息与非敏感信息分开存储,提高数据安全性。
例子:用户信息表拆分成基本信息表和扩展信息表,基本信息用于常用业务,扩展信息用于个性化设置。
### 总结
- 水平分库分表:适用于通过行拆分解决大数据量和高并发问题。
- 垂直分库分表:适用于通过字段拆分提高性能或满足特定业务和安全需求。
选择分库分表方案时,应根据业务需求和数据特征做出最优决策,并充分考虑扩展性和系统复杂性。