部分-不跨DB拆分(Scale Up纵向扩展升级机器配置)
将大表打散。
一、分表
是把一张表分成多个小表(有时也将表分别存放到不同server上,即用于拆库),适用如下场景
1、一张表的查询速度已经慢到影响使用的时候。
2、当频繁插入或者联合查询时,速度变慢。
二、分区
是把一张表的数据分成N多个区块,仍然是同一张表跨存储不跨DB,适用如下场景
1、一张表的查询速度已经慢到影响使用的时候。
2、对数据的操作往往只涉及一部分数据,而不是所有的数据
第二部分-跨DB拆分(Scale Out横向扩展加机器)
将数据库打碎。
一、分库、分片
1、垂直(纵向)拆分/拆字段
大字段的垂直切分。
按照用途垂直切分。
按照访问频率垂直切分。
2、水平(横向)拆分/拆记录行:
按照时间水平切分
按照用户ID范围切分
分类拆分:论坛的置顶帖子,可以把置顶贴水平切分开来,避免取置顶帖子时从所有帖子的表中读取
二、跨DB拆分需配合分布式事务机制
1、数据库事务管理出现了困难
2、跨库跨表的join问题。
3、需要有服务器进行查询路由转发
4、额外的逻辑运算
动力小刚于2019年4月 个人邮箱:zcs0237#163.com