数据库分表分库原则

垂直拆分

垂直分库

在这里插入图片描述

通俗来说就是专表专库,用户表放到用户库中,订单表放到订单库中

优点是可以在业务层面上解耦合、同时也方便对数据库进行扩展
缺点是部分表无法进行join操作,只能通过接口聚合的方式解决

(join操作即是连接,包括内连接、左连接和右连接)

目前来说,解决方法是在service层多次查询,比如说查权限,先通过角色表查到权限id,再去权限表查一遍权限的内容

垂直分表

在这里插入图片描述

垂直分表是一种数据库优化策略,它将一个表按照字段分成多个表,每个表存储其中一部分字段123。这种方法的核心理念是将表从“宽”变“窄”。

例如,假设我们有一个商品信息表,其中包含商品的基本信息(如名称、价格、图片等)和商品的详细描述。在这种情况下,我们可以将这个表垂直分割成两个表:一个存储商品的基本信息,另一个存储商品的详细描述。

垂直分表的优点:
1、将字段分开,从而减少了读取某表时候的IO操作,从而一定程度上避免IO争抢并且减少了锁表的概率(在并发情况下,如果多个用户同时读取或修改表可能就会造成锁表的现象)
2、因为将基本信息和详细描述分开了,当去查看基本信息时候效率就会提高很多
3、同时垂直分出的表也可以放在不同的库中,进一步降低负载
缺点:
如果要读取完整信息,可能要多次查表,并且在后台进行拼贴

水平拆分

水平拆分就好理解了,目的就是为了减少某表的数据量,将一张表拆成几张表,不去改变字段等

分为库内分表和分库分表

在这里插入图片描述
库内
在这里插入图片描述
分库(分库的原因是为了减少库的压力,因为一个物理机的大小是有限的)

分表策略

按ID区间、按时间、取模分表、主从读写分离

取模分表:选取一个字段,通常是主键,分几个表除以几就行
优点是平均
缺点是当表的数量改变时,需要重新分配所有的数据

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值