MySQL垂直分库,水平分库,垂直分表,水平分表

数据库 MySQL
之前经常被问道这些分库分表的概念,只是大概知道,但是具体如何定义的,问什么这么定义还是不太理解,今天对着数据表中的数据沉思的时候,突然间醒悟,原来这些概念非常好理解,而且可以说水平和垂直这两个词用得恰到好处,非常形象地帮助我们理解它们。

 之前经常被问道这些分库分表的概念,只是大概知道,但是具体如何定义的,问什么这么定义还是不太理解,今天对着数据表中的数据沉思的时候,突然间醒悟,原来这些概念非常好理解,而且可以说水平和垂直这两个词用得恰到好处,非常形象地帮助我们理解它们。

[[352822]]

水平分表

顾名思义,水平分表就是把表中的数据进行了水平切割,意味着按照行进行切割,也就是说不同行的数据被切割后可能在不同的表中。

 

mysql垂直分库,水平分库,垂直分表,水平分表

 

如图所示,根据水平切割之后,id为1和2的数据行会在一个表中,id为3,4的数据行会在一个表中,而id为5的数据会在一个表中,这就是水平分表。

垂直分表

也是一样,它的意思是把数据表进行了垂直分割,原来表中的列被分到了不同的表中。

 

mysql垂直分库,水平分库,垂直分表,水平分表

 

如图所示,desc字段被切割后,会分配到另一张表中。 那么为什么要垂直分表,或者说什么情况下适合垂直分表? 答案就是垂直分表的目的就是将表中的含有大量数据的字段,比如text字段,blob字段从表中分离出去,这样可以大大减轻原表的数据压力,而且这些字段的访问量没有其它字段的访问频率高,所以这么处理是合适的。

水平分库

如果你理解了上面的水平分表和垂直分表,那么数据库的分割你也会很好理解。 顾名思义,水平分库相当于把数据库水平切割,原来一个表中的数据可能会分配到不同的数据库中,这就是水平分库。

 

mysql垂直分库,水平分库,垂直分表,水平分表

 

如图所示,table1,table2,table3,table4中的数据都会被水平切割一刀,这样一个表中的数据可能就会被分配到不同的数据库中。

垂直分库

垂直分库,就是将数据库垂直分割,这回一个表中的数据不会被分配到不同数据库,但是不同表可能会分配到不同的数据库。

 

mysql垂直分库,水平分库,垂直分表,水平分表

 

如图所示,经过垂直分割table1,table2会分到一个数据库db1,而table3,table4会分配到另一个数据库db2。

什么时候垂直分库呢?答案是根据业务逻辑进行分割。比如我们可以把用户表和用户相关的表分配到用户数据库中,而把商品表和商品相关的数据分配到商品数据库中。

总结

总之,无论是何种分割,我们的目的都是为了减少数据库的压力,然后尽可能减少查询带来的复杂性,只要掌握这两个核心,其实概念都是次要的,原理才是重要的。

责任编辑:华轩 来源: 今日头条
相关推荐

2020-07-30 17:59:34

分库分表SQL数据库

2019-03-06 14:42:01

数据库分库分表

2018-01-12 15:17:40

数据库水平分库数据迁移

2022-01-07 14:00:35

分库分表业务量

2022-06-22 07:32:53

Sharding分库数据源

2011-08-10 16:16:28

数据库水平分割垂直分割

2009-01-18 17:52:15

数据仓库SQL Server数据库

2023-07-27 15:38:52

数据集

2017-03-02 13:23:53

订单系统水平分库

2022-01-28 08:59:59

分库分表数据

2022-07-08 08:57:36

数据优化垂直拆分数据库

2011-04-13 13:30:21

eigrp帧中继

2018-05-14 16:14:56

数据库MySQL分表与分区

2019-11-12 09:54:20

分库分表数据

2018-09-21 15:50:58

数据库MySQL分库分表

2018-07-26 14:50:00

数据库MySQL大表优化

2019-07-31 09:27:23

数据库MySQLSQL

2021-08-31 20:21:11

VitessMySQL分库

2022-07-11 08:16:47

NewSQL关系数据库系统

2019-05-13 15:00:14

MySQLMyCat数据库
点赞
收藏

51CTO技术栈公众号