2.每日一读-为什么需要垂直分表?

5 篇文章 0 订阅
2 篇文章 0 订阅

重点: 通过将重要字段单独剥离出一张小表,让每一页能够容纳更多的行,进而缩小数据扫描的范围,达到提高执行效率的目的。

1.水平分表与垂直分表

1.1 水平分表

之前学习的对数据库分片的范围法与HASH法就是水平分表

1.2 垂直分表

将一张大表按照“列”拆分为2张以上的小表,表与表之间通过外键来连接。(公司严格要求使用逻辑外键)
在这里插入图片描述

2.垂直分表的底层原理

在进行分表后,sql语句变得复杂,但是我们为什么依旧要这样做?

#调整前
SELECT * FROM 用户表 WHERE 用户名='吉吉';

#调整后
SELECT * FROM 用户信息基础表 a,用户信息详情表 b WHERE a.用户id=b.用户id and a.用户名='吉吉';

在这里插入图片描述
我们只需要知道:

  1. 不做垂直切分,1K大小的行需要625万页
  2. 做了垂直切分,小表64字节/行,存储小表需要39万页
  3. 通过将重要字段单独剥离出一张小表,让每一页能够容纳更多的行,进而缩小数据扫描的范围,达到提高执行效率的目的。

3.垂直分表的依据

3.1 时候必须考虑垂直分表?

单表数据量未来可能千万
字段超过20个,且包含了超长的Varchar、CLOB、BLOB等字段

3.2 参考:放入小表的字段

数据查询、排序时需要的字段,如分类编号、商户id、品牌编号、逻辑删除标志位等
高频访问的小字段,如商品名称、子标题、价格、厂商基本等

3.3 参考:放入大表的字段

低频访问字段:配送信息、售后声明、最后更新时间等
大字段:商品图文详情、图片BLOB、JSON元数据等

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值