当前位置: 首页>前端>正文

java mysql表如何拆成多个表 mysql大表拆分

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

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

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

问题表特点

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

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

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

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

拆分方案

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

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

2、大字段,例如json、text

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

3、冗余字段

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

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


https://www.xamrdz.com/web/2vy1960261.html

相关文章: