分库分表包括分库和分表两个部分,在生产中通常包括:垂直分库、水平分库、垂直分表、水平分表四种方式;
1、垂直分表
1.1 垂直分表定义
-
垂直分表就是在同一数据库内将一张表按照指定字段分成若干表,每张表仅存储其中一部分字段;
-
垂直分表拆解了原有的表结构,拆分的表之间一般是一对一的关系;
1.2 垂直分表场景示例
1.2.1 场景说明
下边通过一个商品查询的案例讲解垂直分表,通常在商品列表中是不显示商品详情信息的,如下图:
说明:
-
用户浏览商品列表时只对感兴趣商品查看商品详情:商品描述信息被访问的频次较低,且该字段占用存储空间较大;
-
商品表字段出现部分字段访问频次不一致的情况:商品名称、商品图片、商品价格等其他字段数据访问频次较高
由于这两组数据的特性不一样,因此我们可以考虑将商品信息表拆分如下,将访问频次低的商品描述信息单独存放在一张表中,访问频次较高的商品基本信息单独放在一张表中:
商品列表可采用以下sql:
SELECT p.*,r.[地理区域名称],s.[店铺名称],s.[信誉]
FROM [商品信息] p
LEFT JOIN [地理区域] r ON p.[产地] = r.[地理区域编码]
LEFT JOIN [店铺信息] s ON p.id = s.[所属店铺]
WHERE...ORDER BY...LIMIT...
需要获取商品描述时,再通过以下sql获取:
SELECT *
FROM [商品描述]
WHERE [商品ID] = ?
1.2.2 垂直分表优势
-
充分提高了热点数据