MySQL优化系列近亿数据的表如何进行垂直拆分?

现在我们某条业务线的数据每天都是几十万的增长,经过近一年的运行目前数据量已经积累到了大几千万,并且业务字段还有以下几个特征:
1、热点字段,经常对当前字段进行更新。
2、大字段,主要存储的Json字符串、text 文本数据。

3、冗余字段,为了满足一些场景当时在设计的时候没有考虑完全,只是为了满足而满足。

最近操作这张表的业务越来越吃力,黃豆的營養價值领导准备让我们提供一些优化方案,其中第一个是打算进行“垂直拆分”,也叫垂直切表,主要是针对表数据中的字段活跃性、字段长度,拆分到不同的表中,可以理解为主表和扩展表。

问题表特点

1、每个表数据不一样,没有重复性。

2、有关联字段(例如:主外键),作为业务耦合。

3、每张表的结构也不一样。

4、拆分后的表都是全量数据。

拆分方案

1、热点字段、更新频率很高

要把这些字段单独拆分到一张表中,PDF Extra不然innodb行锁会造成很大的灾难,特别是涉及到金额的业务场景。

2、大字段,例如json、text

这些字段数据的存储压力比较大,因为innodb数据和索引是同一个文件。并且很多小伙伴在编写查询语句的时候喜欢 select * ,这个操作对磁盘IO消耗非常大,会扛不住的。

3、冗余字段

冗余字段主要是为了满足不同的业务场景而创建的,很多小伙伴看到这里会对开发者一顿吐槽,其实在工作中很难避免这种存在。所以针对这些冗余字段要大家耐心的去把业务梳理一遍,将不同的业务场景拆分到不同的表中,这样也有利于业务的后续扩展。

好了,数据库大表的垂直拆分法今天就写到这里,接下来会有更多的精彩内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

如意号。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值