MySQL十九:分库分表实践

本文详述了分库分表的概念、目的、做法及其引发的问题,包括垂直和水平分库分表策略,探讨了分库分表解决的性能瓶颈,并列举了如MyCat、ShardingSphere等中间件解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在很多小型应用中都没真正使用分库分表,但是说起来并不陌生,因为我们在面试中经常会被问到,今天我们从从以下几个方面来聊聊分库分表:「是什么?解决什么?怎么做?为什么要这么做?即:」

  • 分库分表是什么?
  • 分库分表解决什么问题?
  • 分库分表怎么做?
  • 分库分表什么时候做?
  • 分库分表引发的问题是什么?
  • 分库分表中间件有哪些?

一、什么是分库分表

分库分表其实很好理解,「顾名思义,即把存于一个库的数据分散到多个库中,把存于一个表的数据分散到多个表中」。但是需要明确一点,分库分表不是一件事,而是三件事,也就是「分库分表的三种方案」

  • 「只分库不分表」
  • 「只分表不分库」
  • 「既分库又分表」

1.1 只分库不分表

「从单个数据库拆分成多个数据库的过程,将数据散落在多个数据库中,多个数据库同时提供服务」

1.2 只分表不分库

「从单张表拆分成多张表的过程,将数据散落在多张表内」

1.3 既分库又分表

「把存于一个数据库的单表数据分散到不同库的多个表中」

二、分库分表解决什么问题

大型应用系统需要处理大量用户的请求,比如微信,美团,淘宝等每天都会产生海量的数据,我们知道当数据量或者请求数达到一定数量之后,数据库就会产生性能瓶颈,而为了缓解数据量的压力,比较普遍的方案一方面是使用NoSQL,而另一方面就是分库分表。

2.1 分库解决什么问题

分库就是在我们系统的业务量增长到一定程度之后,「解决数据库本身的性能瓶颈问题」,所以「一般都是业务量增长,遇到以下两种情况时就会考虑分库」

  • 「数据库QPS过高,连接数不足」
    数据库的连接是有上限的,在高并发下,大量请求访问数据库,可能会让数据库宕机,致使整个服务不可用,因此我们可以把「单个数据库拆分成多个数据库,分摊请求,缓解单个数据的读写压力,提高并发量」
  • 「磁盘瓶颈」
    数据量是随着业务量的增多而增多的,而单个数据库的磁盘存储量也是有限的,把「单个数据库拆分成多个数据库,缓解磁盘压力,降低磁盘使用率」

2.2 分表解决什么问题

在之前的《单表最大2000W行数据》中,分析了单表的数据存储量,当单表存储的数据过多时,查询数据会非常慢,在高并发场景下,一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值