zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

数据库和数据表的垂直拆分和水平拆分

数据库 数据表 水平 拆分 垂直
2023-09-14 08:59:24 时间

前言

有些人认为数据库拆分或者数据库表拆分是数据库大,或者数据多而形成的,这是不完全的,也可能是当时设计和预想的不一样,比如说当时设计一个功能的时候把这个功能放在主库中,认为是一个亮点,后来这个功能居然是滑铁卢,然后就丢去了分库中。

实际上,数据库拆分是数据库优化最显著的一种方式,针对于数据库设计缺陷上,甚至随着时间的推移,发现拆分成了必要。

正文

数据库垂直拆分

数据库水平拆分

数据库的垂直拆分

最简单就是将常用字段放在一个表,不常用字段放在另外一个表中。

数据库水平拆分

针对这个数据库水平拆分有两种,关于这个id的问题,有些人设计是随机生成的作为id,那么用hash可作为分表的标准。

有些是id 是自动增长的,那么这种处理方法就需要另外建立一张表自动增长来处理这个问题。

什么时候采用分库分表?

采用分库分表是比较危险的情况。

那么先采用一些放肆来缓解。

1.采用redis、memcached 来进行缓存,降低数据库的读操作。

2.如果缓存不行的啊,那么可以采用读写分离。

3.读写分离压力还大的话,使用分库分表。

那么问题来了,在先垂直拆分还是先水平拆分。

如果从风险的角度来说其实水平拆分的风险最小,垂直拆分的风险最大。

那么为什么会先垂直拆分呢?因为是垂直拆分的话,是使得数据库更加合理,如果一开始使用水平拆分,那么后面会增加垂直拆分的复杂度,然后就是水平拆分增加成本。

那么是先分库还是先分表呢?先分库,因为分表是一个巨大的工程,且风险极高。