数据库分表分库
垂直拆分: 每个(库)表的结构都不一样(按业务拆分)
比如:电商库可以分成:用户库、商品库、订单库
优势:
1、业务员清晰,专表专用
2、实现动静分离、冷热数据分离实现。冷库:文章表; 热库:文章评论、点赞表
3、数据维护简单
缺点:
1、如果表单的数据量大,读写压力大
2、部分业务不能关联(只能通过微服务的调用,通过程序实现关联)
水平拆分:将一张大表(2千W【数据库的索引能保存2千W左右的数据】)按一定的规则拆分为多个表;比如将3千W的用户表按mod 3 的方式(以后再拆会有问题)拆分为 3个表
特点:
1、每个表(库)的结构一样
2、每个表的每个记录都不一样
3、拆分的表并集才是完整的数据
优点:
1、减少单个表的量,有助于性能提升
2、提交系统的稳定性和负载能力
3、拆分的表结构相同、程序相对改造少
缺点:
1、数据的扩容、迁移变复杂
2、拆分规则很难抽象出来
2、分片事务的一致性
水平分表分库带来的问题:
1、数据查询(分页),排序
2、分布式事务
3、分布式ID