id取模分表

场景

1 假设按用户id分2个库 每个库分10张表。

分表策略

1.用户id%2 确定库  用户id%3确定表。

2.(用户id%(2*10))/ 10  取整确定库,(用户id%(2*10)%10确定表。

2为最优秀方案连续存储。

tempvar=user_id%(库数量*表数量)
库=tempvar/表数量
表=tempvar%表数量

时间: 2024-10-27 06:26:32

id取模分表的相关文章

Sharding-Jdbc实现分表分库

Sharding-Jdbc分表分库LogicTable数据分片的逻辑表,对于水平拆分的数据库(表),同一类表的总称.订单信息表拆分为2张表,分别是t_order_0.t_order_1,他们的逻辑表名为t_order.ActualTable在分片的数据库中真实存在的物理表.即上个示例中的t_order_0.t_order_1.DataNode数据分片的最小单元.由数据源名称和数据表组成,例:test_msg0.t_order_0.配置时默认各个分片数据库的表结构均相同,直接配置逻辑表和真实表对应

sharding-jdbc结合mybatis实现分库分表功能

最近忙于项目已经好久几天没写博客了,前2篇文章我给大家介绍了搭建基础springMvc+mybatis的maven工程,这个简单框架已经可以对付一般的小型项目.但是我们实际项目中会碰到很多复杂的场景,比如数据量很大的情况下如何保证性能.今天我就给大家介绍数据库分库分表的优化,本文介绍mybatis结合当当网的sharding-jdbc分库分表技术(原理这里不做介绍) 首先在pom文件中引入需要的依赖 <dependency> <groupId>com.dangdang</gr

海量数据存储--分库分表策略详解 (转)

一.背景:     系统刚开始的时候,数据库都是单库单表结构.随着业务量的增加进行第一次数据库升级,根据业务垂直拆分数据库,这样多变成多个业务数据库,每个数据库里面还是单表结构.接下来,继续随着业务量的继续增加,单表已经很难承受数据量,就要进行分表,这个时候就是,多个业务库,每个业务库下对需要分表的表进行分表.再接下来,随着应用的增加,数据库IO,磁盘等等都抗不住了,就要把分表的表分到多个库,这样就形成了如下的结构. 重点:本文主要讨论的是分库分表的策略,也就是分库分表的规则或者说是算法. 二.

mysql分表详解

经常听到有人说“数据表太大了,需要分表”,“xxxx了,要分表”的言论,那么,到底为什么要分表? 难道数据量大就要分表? mysql数据量对索引的影响 本人mysql版本为5.7 新增数据测试 为了测试mysql索引查询是否和数据量有关,本人做了以下的测试准备: 新建4个表article1,article2,article3,article4,article5 每个表分别插入20万,50万,100万,200万,1500万的数据,数据都是随机生成 1 2 3 4 5 6 7 8 9 10 11 1

Mysql分表的一个考虑

今天看到一篇博客,讲述的是Mysql的分表方案,内容比较简单,不过有个思路倒是挺好的,记录下,后续分表可以参考 作者主要是说到两种分表,一个是取模,另一个是范围分表 取模:比如用户ID%10,分10张表 范围分表:比如约定,用户ID0~1000w的数据存在表1,1000w~2000w的用户表2,以此类推 两者各有优缺点,主要体现在扩展性,冷热数据均匀分布的问题. 取模的话,冷热数据比较均衡,但是扩展性比较差,加入后期数据量翻一倍,10个表存不下了,再加10个表咋办? 范围分表的话不存在扩展性问题

分库分表(1) --- 理论

分库分表---理论 当一张表的数据达到几千万时,查询一次所花的时间会变长.业界公认MySQL单表容量在 1千万 以下是最佳状态,因为这时它的BTREE索引树高在3~5之间. 数据切分可以分为:垂直切分和水平切分. 一.垂直切分 垂直切分又可以分为: 垂直分库和垂直分表. 1.垂直分库 概念 就是根据业务耦合性,将关联度低的不同表存储在不同的数据库.做法与大系统拆分为多个小系统类似,按业务分类进行独立划分.与"微服务治理"的做法相似, 每个微服务使用单独的一个数据库. 如图: 说明 一开

mysql 分表

分表策略 1.按时间分表                      特点,不同的天数,时间可能不均匀,有的多,有的少,并且可能出现数据量过大的情况 2.按哈希取模分表 (或主键取模)   特点:区间查找不在同一数据表,难以查找,分桶数无法增加,增加需要重构 3.二进制移位分表                  特点:比较灵活,但数据分割位置比较难控,所以区间查找难以实现. 一般右移23位,可以分出1.5G的表,每行180B计算

Mysql5.7—mysql优化分区、分表(必备)

小生博客:http://xsboke.blog.51cto.com 小生 Q Q:1770058260 -------谢谢您的参考,如有疑问,欢迎交流 一. 分表 1. 分表简介 分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表. 如果正在使用的表需要进行分区,就需要同时修改app的规则,使mysql可以得知用户查询的数据在哪. 2. 分表类型 分为垂直切分和水平切分 垂直切分:将某些列分到另一个表 水平切分:将某些行分到另一个表 3. 分表的方式 1) Mysql集群 它并不是

MySQL 数据库分表分区

博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持!一.分表 为什么要分表? 我们的数据库数据越来越大,随之而来的是单个表中数据太多.以至于查询书读变慢,而且由于表的锁机制导致应用操作也搜到严重影响,出现了数据库性能瓶颈. 什么是分表? 分表是将一个达标按照一定的规则分解成多张具有独立存储空间的实体表,每个表都对应三个文件,.MYD数据文件..MYI索引文件..frm表结构文件.这些表可以分