---
title: 分库分表场景
published: 2025-09-13
description: ''
image: ''
tags: ['中间件','MySQL','分库分表']
category: '中间件 > MySQL'
draft: false 
lang: ''
---


# 分库分表

## 什么场景分库
- 当单个数据库支持的连接数不足以满足客户端需求
- 数据量超过了单个数据库实例的处理能力

## 什么场景分表
- 单表数据量太大
- 单表存在较高的写入场景
- 当表中存在大量的TEXT,LONGTEXT 或者BLOB字段

## 什么场景分库分表
- 高并发写入场景： 当应用面临高并发的写入请求的时候，单库单表无法满足需求，需要进行分库分表。
- 海量数据场景： 当数据量非常大的时候，单库单表无法满足需求，需要进行分库分表。

## 分库分表的优缺点
### 优点
- 提高系统的性能和可扩展性
- 提高系统的可用性和可靠性
- 提高系统的可维护性

### 缺点
- 增加系统的复杂性
- 增加系统的成本
- 增加系统的维护成本


## 分库分表如何设计

我们分库分表，是有分片键的，这个分片键怎么用的呢？
分片键是用来决定一条数据应该存储在哪个库或者表中的字段，它直接影响数据的分布，查询效率和系统扩展性。

举个例子：
1. Hash分片
原理： 对分片键的值进行哈希运算，然后对库或者表取模
适用场景： 数据访问随机性强，读写均衡
![](https://blog.meowrain.cn/api/i/2025/09/13/n8ryrj-1.webp)

2. Range分片（范围分片）
原理： 根据分片键的值范围划分数据
使用场景： 时间序列数据，范围查询频繁
![](https://blog.meowrain.cn/api/i/2025/09/13/n99aoy-1.webp)

3. Lookup映射分片
原理： 维护一个映射表，指定某个分片键值属于哪个分片
使用场景： 分片键是枚举值，比如国家，地区等
![](https://blog.meowrain.cn/api/i/2025/09/13/n9u3ge-1.webp)


![](https://blog.meowrain.cn/api/i/2025/09/13/nmff34-1.webp)