Mysql的分库分表策略

野性酷女 2024-03-17 19:42 124阅读 0赞

一.水平切分

水平切分又称为 Sharding 策略,它是将同一个表中的记录拆分到多个结构相同的表中。

当一个表的数据不断增多时,Sharding 是必然的选择,它可以将数据分布到集群的不同节点上,从而缓存单个数据库的压力。

2e5bbfd360b6d12fe64051e5f4a76a3e.jpeg

Sharding 策略

  • 哈希取模: hash(key) % NUM_DB
  • 范围: 可以是 ID 范围也可以是时间范围
  • 映射表: 使用单独的一个数据库来存储映射关系

Sharding 存在的问题及解决方案

1.事务问题

使用分布式事务来解决,比如 XA 接口。

  1. 链接

可以将原来的 JOIN 分解成多个单表查询,然后在用户程序中进行 JOIN。

3.ID 唯一性

  • 使用全局唯一 ID: GUID
  • 为每个分片指定一个 ID 范围
  • 分布式 ID 生成器 (如 Twitter 的 Snowflake 算法)

![Image 1][]

二.垂直切分

![Image 1][]

垂直切分是将一张表按列切分成多个表,通常是按照列的关系密集程度进行切分,也可以利用垂直切分将经常被使用的列和不经常被使用的列切分到不同的表中。

在数据库的层面使用垂直切分将按数据库中表的密集程度部署到不同的库中,例如将原来的电商数据库垂直切分成商品数据库、用户数据库等。

52b9e5975b0cc6326fa11e694b70f43c.jpeg

我的工作还没接触到这个,等后面再去深入研究….

更多内容请参考:

  • How Sharding Works在新窗口打开
  • 大众点评订单系统分库分表实践

著作权归@pdai所有 原文链接:https://pdai.tech/md/db/sql-mysql/sql-mysql-devide.html

[Image 1]:

发表评论

表情:
评论列表 (有 0 条评论,124人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MySQL分库策略及其挑战

    MySQL的分库分表策略主要是为了提高数据处理能力和应对高并发场景。常见的分库和分表策略包括: 1. **垂直分割**:将大的表按照某个字段(如用户ID)进行拆分,存储在不同

    相关 Mysql分库策略

    一.水平切分 水平切分又称为 Sharding 策略,它是将同一个表中的记录拆分到多个结构相同的表中。 当一个表的数据不断增多时,Sharding 是必然的选择,它可以

    相关 MySQL 分库策略,超实用

    在数据爆炸的年代,单表数据达到千万级别,甚至过亿的量,都是很常见的情景。这时候再对数据库进行操作就是非常吃力的事情了,select个半天都出不来数据,这时候业务已经难以维系。不

    相关 数据库分库策略

    一、背景:      系统刚开始的时候,数据库都是单库单表结构。随着业务量的增加进行第一次数据库升级,根据业务垂直拆分数据库,这样多变成多个业务数据库,每个数据库里面还是单