Mysql 分布式序列算法

接上文 Mysql分库分表

1.分布式序列简介

在分布式系统下,怎么保证ID的生成满足以上需求?

ShardingJDBC支持以上两种算法自动生成ID。这里,使用ShardingJDBC让主键ID以雪花算法进行生成,首先配置数据库,因为默认的注解id是int类型,装不下64位,需要进行修改:

c 复制代码
# 在本地和远端服务器数据库都要运行
ALTER TABLE `yyds`.`test` MODIFY COLUMN `id` bigint(128) NOT NULL FIRST;

然后修改mybatis的插入语句,因为现在id是ShardingJDBC自动生成,不需要自己加了:

c 复制代码
@Insert("insert into test(name, passwd) values(#{name}, #{passwd})")
int addUser(User user);

修改测试用例

c 复制代码
    @Test
    void contextLoads() {
        for (int i = 0; i < 20; i++) {
            mapper.addUser(new User("aaa", "bbb"));
        }
    }

修改配置文件

c 复制代码
spring:
  shardingsphere:
    datasource:
      sharding:
        tables:
          test:
            actual-data-nodes: db0.test,db1.test
            #这里还是使用分库策略
            database-strategy:
              standard:
                sharding-column: id
                sharding-algorithm-name: my-alg
            #这里使用自定义的主键生成策略
            key-generate-strategy:
              column: id
              key-generator-name: my-gen
        key-generators:
        	#这里写我们自定义的主键生成算法
          my-gen:
          	#使用雪花算法
            type: SNOWFLAKE
            props:
            	#工作机器ID,保证唯一就行
              worker-id: 666
        sharding-algorithms:
          my-alg:
            type: MOD
            props:
              sharding-count: 2

此时不再需要test_01,test_02表了,数据库中可删除。

运行测试用例

相关推荐
爱学习的阿磊13 分钟前
使用Fabric自动化你的部署流程
jvm·数据库·python
枷锁—sha19 分钟前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
惜分飞31 分钟前
ORA-600 kcratr_nab_less_than_odr和ORA-600 4193故障处理--惜分飞
数据库·oracle
chian-ocean32 分钟前
CANN 生态进阶:利用 `profiling-tools` 优化模型性能
数据库·mysql
m0_5500246335 分钟前
持续集成/持续部署(CI/CD) for Python
jvm·数据库·python
禁默35 分钟前
打破集群通信“内存墙”:手把手教你用 CANN SHMEM 重构 AIGC 分布式算子
分布式·重构·aigc
AC赳赳老秦36 分钟前
代码生成超越 GPT-4:DeepSeek-V4 编程任务实战与 2026 开发者效率提升指南
数据库·数据仓库·人工智能·科技·rabbitmq·memcache·deepseek
啦啦啦_99991 小时前
Redis-2-queryFormat()方法
数据库·redis·缓存
玄同7652 小时前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
吾日三省吾码2 小时前
别只会“加索引”了!这 3 个 PostgreSQL 反常识优化,能把性能和成本一起打下来
数据库·postgresql