依次类推!
水平分表相对比较容易,后面会讲到基于mybatis插件实现方案
场景:以下我们基于博客文章表分库场景来分析
目标:
表结构如下(节选部分字段):
按照user_id sharding
假如分1024个库,按照user_id % 1024 hash
user_id % 1024 = 1分到db_001库
user_id % 1024 = 2 分到db_002库
依次类推
目前是2个节点,假如后期达到瓶颈,我们可以增加至4个节点
最多可以增加只1024个节点,性能线性增长
对于水平分表/分库后,非shardingKey查询首先得考虑到
基于mybatis分库分表,一般常用的一种是基于spring AOP方式, 另外一种基于mybatis插件 。其实两种方式思路差不多 。
为了比较直观解决这个问题,我分别在Executor 和StatementHandler阶段2个拦截器
实现动态数据源获取接口
测试结果如下
由此可知,我们需要在Executor阶段 切换数据源
对于分库:
原始sql:
目标sql:
其中定义了三个注解
@useMaster 是否强制读主
@shardingBy 分片标识
@DB 定义逻辑表名 库名以及分片策略
1)编写entity
Insert
select
以上顺利实现mysql分库,同样的道理实现同时分库分表也很容易实现 。
此插件具体实现方案已开源:
目录如下:
mysql分库分表,首先得找到瓶颈在哪里(IO or CPU),是分库还是分表,分多少?不能为了分库分表而拆分 。
原则上是尽量先垂直拆分 后 水平拆分 。
以上基于mybatis插件分库分表是一种实现思路,还有很多不完善的地方,
例如:
亿级数据怎么存mysql的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于亿级数据存储、亿级数据怎么存mysql的信息别忘了在本站进行查找喔 。
推荐阅读
- js获取网页地址的方法是,js获取指定网页中的元素
- JS实现全选与全不选,js全选按钮代码
- 幼儿体育游戏高清图片,幼儿体育游戏的图片
- 丝路电商如何发展,丝路发现商路
- Java买书代码 java购买图书
- 快手推广如何设置区域定位,快手推广怎么选择地域
- excel里面怎么回车符号去掉,excel回车键怎么去掉
- 篮球动作练习游戏,篮球训练游戏视频简单
- java简单源代码百度盘 java编程源码