栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ShardingJDBC分表分库

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ShardingJDBC分表分库

一、数据库分库分表规则

1、什么是垂直/水平拆分模式

垂直拆分:公司根据不同的业务来拆分成不同的数据库

应用场景:微服务(订单、会员、支付)

缺点:分布式事务问题

水平拆分:单张表数据量达到500w条,可能会遇到查询瓶颈,比如:分页和排序

将单张表数据放入到多个不同的数据库中,或者将单表拆分成N个子表存放进行查询

缺点:查询问题 分页/排序可能会引发内存溢出问题

2、基于客户端/服务器端实现分表分库区别

数据库中间件:mycat或者ShardingJDBC

基于服务器端-mycat:

优点:归并数据结果是完全解耦合,保证数据的安全性

缺点:效率偏低

基于客户端-ShardingJDBC

优点:效率高

缺点:归并数据结果没有实现解耦合,有可能会影响业务逻辑

原理:基于aop代理方式拦截改写sql

例如:select * from user -> select * from user_0, select * from user_1

3、单表达到多少数据量开始分表分库

【推荐】单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。 说明:如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。

4、数据库分表分库策略有哪些

取余/取模

按照范围分片

按照日期进行分片

按照月份进行分片

按照枚举进行分片

二进制取模范围分片

一致性hash分片

按照目标字段前缀指定的进行分区

按照前缀ASCII码和值进行取模范围分片

二、项目实例

1、application.yml

server:
  port: 9091
mybatis-plus:
  type-aliases-package: cn.itcloud.sharedingjdbc.entity
  mapper-locations: classpath:mapper
@Data
@TableName("user") //逻辑表名称:user,分表为:user_01,user_02
public class User {

    private Integer id;

    private String userName;

    private Integer age;

    public User(Integer id, String userName, Integer age) {
        this.id = id;
        this.userName = userName;
        this.age = age;
    }
}

4、UserMapper-分页查询和排序

package cn.itcloud.sharedingjdbc.mapper;

import cn.itcloud.sharedingjdbc.entity.User;
import com.baomidou.mybatisplus.core.mapper.baseMapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;


public interface UserMapper extends baseMapper {
    
    @Select("select * from user")
    List getList();


    
    @Select("select * from user limit 0,2")
    List getListPage();

    
    @Select("select * from user order by id desc")
    List getListOrderBy();

    @Select("select *  from user where id = #{id}")
    List getListById(Integer id);

}

项目源码:https://gitee.com/zqingcpu/SharedingJDBC.git

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/771112.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号