为什么要分库分表,总体上来说就是为了提高查询速度而进行优化的
水平分库和水平分表差不多都是一个概念,就是数据分片的一个技术
例如:当我的商品数据量过多的时候,单个系列表的数据超过1500万条的时候,只在一个数据库进行存放会导致数据库性能降低
这时候我们就可以进行水平拆分了,例如:讲id尾数为1的数据存在数据库A1中,讲数据id 为2的数据存在数据库A2中,以此类推,当前你要去查询的时候可以更加id 的尾数到指定的数据库中进行查询,这样就大大的减少了单个数据库的数据库量
水平分表也是如果,将一张表分成具有相同字段的多张表
垂直分库就是讲不同表存在不同的库中,例如:商品表就存在商品库中,用户信息表就存在用户信息库中
用户在电商平台流览商品时,首先看到的是商品的基本信息,如果对该商品感兴趣时才会继续查看该商品的详细描述。因此,商品基本信息的访问频次要高于商品详细描述信息,商品基本信息的访问效率要高于商品详细描述信息(大字段)。 由于这两种数据的特性不一样,因此考虑将商品信息表拆分如下:
这种拆分就叫垂直分表。垂直分表定义:将一个表的字段分散到多个表中,每个表存储其中一部分字段。垂直分表带来的提升是:
一般来说,某业务实体中的各个数据项的访问频次是不一样的,部分数据项可能是占用存储空间比较大的BLOB或是TEXT。所以,当数据量很大时,可以将表按字段拆分,将热门字段、冷门字段分开放置在不同表中。垂直切分带来的性能提升,主要集中在热门数据的操作效率上,而且磁盘争用情况减少。通常我们按以下原则进行垂直拆分: