MySql分区分表的概念

本文深入探讨了数据库的分库分表技术,包括读写分离、分区、分库和分表的具体应用场景,以及水平分表和垂直分表的区别。同时,详细介绍了全局ID生成的三种常见策略:全局ID映射表、UUID和COMB,以及它们各自的优缺点。最后,文章对比了几种分片策略,如连续分片、ID取模分片和一致性Hash算法,分析了它们的适用场景和潜在问题。

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

一、分库分表相关术语

  • 读写分离:不同的数据库,同步相同的数据,分别只负责数据的读和写;
  • 分区:指定分区列表达式,把记录拆分到不同的区域中(必须是同一服务器,可以是不同硬盘),应用看来还是同一张表,没有变化;
  • 分库:一个系统的多张数据表,存储到多个数据库实例中;
  • 分表:对于一张多行(记录)多列(字段)的二维数据表,又分两种情形:
  • ①垂直分表:竖向切分,不同分表存储不同的字段,可以把不常用或者大容量、或者不同业务的字段拆分出去;
  • ②水平分表(最复杂):横向切分,按照特定分片算法,不同分表存储不同的记录。

二、全局ID生成策略

     1、全局ID映射表:

     在全局Redis中为每张数据表创建一个ID的键,记录该表当前最大ID;每次申请ID时,都自增1并返回给应用;Redis要定期持久至全局数据库。

     2、UUID(128位)

     在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成UUID的API。

UUID由4个连字号(-)将32个字节长的字符串分隔后生成的字符串,总共36个字节长。形如:550e8400-e29b-41d4-a716-446655440000。

      UUID的计算因子包括:以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。UUID是个标准,其实现有几种,最常用的是微软的GUID(GlobalsUniqueIdentifiers)。

  • 优点:简单,全球唯一。

  • 缺点:存储和传输空间大,无序,性能欠佳。

    3、COMB(组合)

    组合GUID(10字节)和时间(6字节),达到有序的效果,提高索引性能。

三、分片策略

1、连续分片

根据特定字段(比如用户ID、订单时间)的范围,值在该区间的,划分到特定节点。

  • 优点:集群扩容后,指定新的范围落在新节点即可,无需进行数据迁移。 

  • 缺点:如果按时间划分,数据热点分布不均(历史数冷当前数据热),导致节点负荷不均。

2、ID取模分片

  • 缺点:扩容后需要迁移数据。

3、一致性Hash算法

  • 优点:扩容后无需迁移数据。

 

 

转载链接

https://mp.weixin.qq.com/s/0ExWz5xoxqRPFgGJjJYD6g

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值