Sharding-JDBC:单库分表的实现

本文介绍了当单表数据量超过1千万时,如何使用Sharding-JDBC进行水平拆分以减轻数据库压力。讲解了表的水平拆分概念,展示了未分表与已分表的对比,并详细说明了分表配置步骤,包括实际数据节点配置、分表规则设定及自定义分片算法。最后强调了Sharding-JDBC在复杂分表场景中的易用性优势。
摘要由CSDN通过智能技术生成

剧情回顾

前面,我们一共学习了读写分离,垂直拆分,垂直拆分+读写分离。对应的文章分别如下:

Sharding-JDBC:查询量大如何优化?

Sharding-JDBC:垂直拆分怎么做?

通过上面的优化,已经能满足大部分的需求了。只有一种情况需要我们再次进行优化,那就是单表的数量急剧上升,超过了1千万以上,这个时候就要对表进行水平拆分了。

表的水平拆分是什么?

就是将一个表拆分成N个表,就像一块大石头,搬不动,然后切割成10块,这样就能搬的动了。原理是一样的。

除了能够分担数量的压力,同时也能分散读写请求的压力,当然这个得看你的分片算法了,合理的算法才能够让数据分配均匀并提升性能。

今天我们主要讲单库中进行表的拆分,也就是不分库,只分表。

既分库也分表的操作后面再讲,先来一幅图感受下未分表:

然后再来一张图感受下已分表:

从上图我们可以看出,user表由原来的一个被拆分成了4个,数据会均匀的分布在这3个表中,也就是原来的user=user0+user1+user2+user3。

分表配置

首先我们需要创建4个用户表,如下:


   
   
   
  1. CREATE TABLE `user_0`(

  2. id bigint(64) not null,

  3. city varchar(20) not null,

  4. name varchar(20) not null,

  5. PRIMARY KEY (`id`)

  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值