

分库&拆表方案

## 基本认识
1. 用分库&拆表是解决数据库容量问题的唯一途径。
2. 分库&拆表也是解决性能压力的最优选择。
3. 分库 – 不同的数据表放到不同的数据库服务器中（也可能是虚拟服务器）
4. 拆表 – 一张数据表拆成多张数据表，可能位于同一台服务器，也可能位于多台服务器（含虚拟服务器）。

## 去关联化原则
1. 摘除数据表之间的关联，是分库的基础工作。
2. 摘除关联的目的是，当数据表分布到不同服务器时，查询请求容易分发和处理。
3. 学会理解反范式数据结构设计
所谓反范式  
第一要点是不用外键，不允许Join操作，不允许任何需要跨越两个表的查询请求。  
第二要点是适度冗余减少查询请求。  
4. 去关联化处理会带来额外的考虑，比如说，某一个数据表内容的修改，对另一个数据表的影响。这一点需要在程序或其他途径去考虑。

## 分库策略
1. 安全性拆分
高安全和低安全数据拆分
2. 基于业务逻辑拆分
3. 基于负载压力拆分
基于负载压力对数据表拆分，直接将负载分离出去

## 拆表策略
1. 数据量过大或访问压力过大的数据库需要切分
2. 纵向拆表
3. 横向拆表