MySQL--表的拆分

表的垂直拆分,控制表的宽度。把原来一个有很多列的表拆分成多个表,解决表的宽度问题,
1 经常一起查询的列放到一起。
2 把大字段独立存放到一个表中,如Text,blob等大字段拆分到附加表中,
3 把经常一起使用的字段放在一起。

表的水平拆分,是为了解决单表的数据量过大、CPU负载过大、查询耗时等问题。水平拆分的表每一个表的结构都是一致的。
为了控制表的大小可以进行表的水平拆分。
range拆分,一段范围内的数据存放到一张表中,如对userid取商,userid为1~9999999范围的数据放到一张表中,userid为10000000-19999999放到一张表中。
MySQL--表的拆分_第1张图片

对字段取模,例如按userid维度进行拆分,例如第一次拆分为4张表。第二次在原来每张表的基础上再拆分为2张表,即每次拆分都是在原来的基础上扩大两倍,学习的是hashmap扩容时rehash链表的原理,这样只需要把原表中的数据迁移一半即可。
MySQL--表的拆分_第2张图片
参考:
http://mp.weixin.qq.com/s?__biz=MjM5MDE0Mjc4MA==&mid=2650994883&idx=1&sn=d605c663547c2dba92fb73b926779a06&chksm=bdbf00908ac8898619285ffbb4a921fab27951cedb4db4bfab50be9b5ab68c88212f33874ba4&mpshare=1&scene=24&srcid=0416AkRiAbEELhCt2ng7EZQV&sharer_sharetime=1587003843152&sharer_shareid=6cf53bc6b76663c6e39bd2553903560e#rd
http://mp.weixin.qq.com/s?__biz=MzI4NTA1MDEwNg==&mid=2650774906&idx=1&sn=ae0fefd94163bceec85380748d9398ab&chksm=f3f928efc48ea1f9dda2458654c9f173ba7511ab2d85d93d3060bc8e60a58cd17d0a73176574&mpshare=1&scene=24&srcid=0415dCZTnt8GX3cv5vf89gRF&sharer_sharetime=1586926084981&sharer_shareid=6cf53bc6b76663c6e39bd2553903560e#rd

你可能感兴趣的:(数据库)