Home | 简体中文 | 繁体中文 | 杂文 | 知乎专栏 | 视频教程 | bilibili | Github | OSChina 博客 | 云社区 | 云栖社区 | Facebook | Linkedin | 打赏(Donations) | About
知乎专栏多维度架构 | 微信号 netkiller-ebook | 51CTO:视频教程

第 8 章 多维度架构之分库分表

目录

8.1. 切分策略
8.1.1. 垂直切分
8.1.2. 水平切分
8.2. 常规操作
8.3. 分表需要从业务角度考虑
8.4. 最后总结

分库和分表是架构必经之路,我想问问你是怎么分库和分表?

很多系统在设计之初就没有考虑过后期的分库与分表,甚至开发团队没有架构和DBA人员,开发团队也比较年轻,对于数据库的架构定义非常随意,满足当前需求即可。

实际上数据库结构等同于建筑里面的地基,地基没有打好,后面的优化都是徒劳的,最终不得不重构数据库结构。

那么你是怎样分库分表的?

8.1. 切分策略

数据的切分策略有两种方式,分别是:水平(横向)切分和垂直(纵向)切分。

技术手段也有四种方法,分别是:类别、范围、Hash和冷热数据。

一旦使用了分库分表技术,后面的很多技术就受到影响,技术上就要妥协。

8.1.1. 垂直切分

将某个分类数据,某个范围内的数据或者符合Hash值的数据存储到不同的数据库或者表中。

垂直切分的优点:缩小单表结果集,提高查询速度

垂直切分的缺点:索引不连续,必须合并查询,很多SQL语句会受到限制,例如join(原本不需要),count,order by,事务处理变得复杂。

8.1.2. 水平切分

由于数据表字段太多,对于大型系统也会产生负担,水平切分就是将表中的某些字段独立到新的表中,然后通过一对一外键关联两张表。

水平切分优点:缩小结果集,对于使用 select * 返回数据的查询立竿见影

水平切分缺点:夸库无法使用一对一外键约束,对于不使用外键的项目,会产生脏数据。

网站:http://www.netkiller.cn/ | 知乎:netkiller | 51CTO:视频教程 | Bilibili:netkiller | Github:netkiller