面试 ~ 水平分库分表、垂直分库分表

15 篇文章 0 订阅
2 篇文章 0 订阅

前言

本篇文章只介绍数据库水平分库分表的概念,不涉及到任何分库分表操作。作为下一篇数据库分库分表解决方案的基础
【面试】在面试时,经常会被问到这样的一个问题

  1. 你知道什么是分表分库?
  2. 你公司有没有分表分库的案例?详细说说
    针对第一个问题,主要是讲一下分表分库的概念,这里要区分四种(分表、分库) * (水平、垂直)= 4种
    针对第二个问题,详细看看第二篇文章咯

业务场景

数据库数据量是不可控的,随着时间和业务发展,导致表里面数据越来越多,如果再去对数据库表做CURD操作时,会造成性能问题

解决方案

  1. 从硬件上,提高硬件设备,如CPU,或者内存。成本高,最早淘宝就是升级硬件设备,已经达到顶级配置了仍然达不需求。
  2. 分库分表:将数据库进行拆分、数据表进行拆分。
    2020-10-30
分库分表

分库分表有两种方式:垂直切分和水平切分

  1. 垂直分表:将一张表的字段划分为多张表,每张表只存储一部分数据数据。

    举个例子:
    在这个课程列表及详情中,可以设置成一张表,课程信息表:课程名称、课程封面、课程价格、课程描述、其他信息
    也可以设计成:课程基本信息、课程描述信息
    又如:
    mer_info(用户信息表) mer_passwd(用户交易密码) mer_sectret(用户密钥信息表)
    三者都是1对1对1的关系,因此设计成一张表也是可以的,但是在实际开发中,把能独立、少操作的、不需要一起展示的单独成一张表,这就是垂直分表

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
2. 垂直分库:把单一数据库按照业务划分,专库专表
在分布式项目中,经常可以看到,根据业务拆分项目,每个项目单独连不同的数据库
如: user用户服务、account账户服务、trade交易服务、rate汇率服务,每个服务单独连自己的数据库

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
3. 水平分库:在两个不同的数据库上都有相同的一张表,根据某种路由规则对这张表进行操作
在这里插入图片描述
4. 水平分表:在同一个数据库上有两张相同结构的表,表名不同,根据某种路由规则对这张表进行操作。
在这里插入图片描述

原则

  1. 在数据库设计的时候考虑垂直分库和垂直分表
  2. 随着数据库数据量增加,不要马上考虑做水平切分,首先考虑缓存处理,读写分离,使用索引等等方式,如果这些方式不能根本解决问题,再考虑做水平分库和水平分表。

分库分表导致问题

1、跨节点谅解查询问题(分页、排序)
2、多数据源管理问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值