Sharding分库分表(目录)

本文介绍了分库分表的需求背景,如互联网高并发场景,以及分片带来的好处和挑战。讨论了垂直分片和水平分片两种策略,强调了分片键选择的重要性。同时,详细阐述了路由机制、数据分布以及Sharding的优化方法,包括分片流程、核心问题和最佳实践建议。

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

Sharding分片的话, 只需要一句话,就可以完成分片. 有以下两种写法,与表名关系或与实现类关联.

数据源有ds0,ds1; test_user总共有6个表, ds0是test_user0,test_user1,test_user2,另外三个在ds1.  分片键是id, 默认是根据id的值求余,余数的下标即可表的下标.

ShardingConfig.addShardingBean("test_user",new ShardingBean("ds[0..1].test_user[0..5]", "id"));
ShardingConfig.addShardingBean(TestMyUser.class,new ShardingBean("ds[0..1].test_my_user[0..5]", "id"));


1.    背景:为什么需要分库分表
1.1    互联网需求    3
1.2    分库分表的好处    4
1.2.1    分库的好处    4
1.2.2    分表的好处    4
1.3    分片后带来的挑战    4
1.4    目标    5
1.5    什么样的表需要进行分库分表    5
1.6    电商系统哪些表需要作分库分表    5
2.    分库分表种类    5
2.1    垂直分片    5
2.2    水平分片    6
2.3    分库分表种类介绍    6
2.3.1    只分表    7
2.3.2    只分库    7
2.3.3    分库分表    7
3.    基本概念    7
3.1    基本表    7
3.2    实际表    7
3.3    表下标(表后缀)    7
3.4    关联表(主表与从表)    8
3.5    广播表    8
3.6    单表    8
3.7    数据节点    8
3.8    完整的数据节点    8
4.    路由/映射:如何找到要操作的表    8
4.1    实际表的分布种类    8
4.2    分片键    9
4.2.1    分库键    9
4.2.2    分表键    9
4.2.3    分片键的选择    9
4.2.4    实践—用userid作为分表键的好处    10
4.3    分片算法及分片函数    10
4.4    默认分片函数及分片的自动化    10
4.5    强制指定分片路由    10
4.6    路由到的库与表种类    11
4.6.1    一库一表    11
4.6.2    一库多表    11
4.6.3    多库多表    11
4.6.4    全库全表    11
4.6.5    只指定表    11
4.6.6    只指定库    11
4.7    如何分片    12
4.7.1    SQL触发的分片    12
4.7.2    面向对象触发的分片    12
4.7.3    SQL分片与面向对象分片的异同    12
4.8    分片优化与应该避免的问题    12
4.8.1    引起全域查询    12
4.8.2    插入的数据必须要找到归属    12
4.9    主键(分布式唯一ID)    12
5.    分片流程与Sharding核心问题    12
5.1    Bee (JDBC部分)的转换流程    12
5.2    Bee Sharding分片流程    13
5.3    Sharding核心问题    14
5.3.1    改写SQL    14
5.3.2    结果合并    14
5.3.3    排序    14
5.3.4    分页    14
5.3.5    查询Json    15
6.    Sharing最佳实践    15
6.1    表节点分布要有规律    15
6.2    配置简单方便    15
6.3    允许只有部分表分片    15
6.4    无侵入架构设计    15
6.5    分片透明化    15
6.6    示例    16
6.7    建议    16
7.    Bee对分片的优化    16
7.1    对一库一表的优化    16
7.2    对一库多表的分页查询的优化    16
7.3    对路由结果是只指定表的优化    17
7.4    采用约定方式,简化逻辑    17
 

sharding分库分表是一种在关系型数据库中用来解决大数据量和高并发问题的技术。它将一个大的数据库水平切分为多个小的数据库(分库)和表(分表),每个小的数据库和表只负责处理一部分数据。这样可以将数据均匀地分布到多个数据库和表中,从而提高系统的并发能力和扩展性。 在Spring中,可以使用ShardingSphere框架来实现分库分表的功能。其中,可以通过配置文件来定义分库分表的策略。引用中的配置表示使用id作为分表的列,而引用中的配置表示使用teacher_id作为分库的列。这样,根据不同的id或teacher_id的取值,数据将被分散到不同的库或表中。 此外,还可以通过配置key-generator来定义生成分表键的策略,引用中的配置表示使用id作为生成分表键的列。 总结起来,sharding分库分表是通过将大的数据库切分为小的数据库和表,以及定义分库分表的策略和生成分表键的策略来实现的。这样可以提高系统的并发能力和扩展性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [ShardingSphere分库分表教程,java后端开发面试题](https://blog.youkuaiyun.com/m0_64205716/article/details/121313447)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值