Java培训Mycat全局序列

news2025/1/17 15:46:34

全局序列

1、本地文件方式

不推荐,如在Mycat主机中用本地文件方式创建全局序列,当这台机器宕机时会出现,序列文件丢失,造成序列冲突问题

Java培训Mycat全局序列

2、数据库方式

2.1、原理

利用数据库一个表 来进行计数累加。但是并不是每次生成序列都读写数据库,这样效率太低mycat会预加载一部分号段到mycat的内存中,这样大部分读写序列都是在内存中完成的。如果内存中的号段用完了 mycat会再向数据库要一次。

问题:那如果mycat崩溃了 ,那内存中的序列岂不是都没了?

是的。如果是这样,那么mycat启动后会向数据库申请新的号段,原有号段会弃用。也就是说如果mycat重启,那么损失是当前的号段没用完的号码,但是不会因此出现主键重复。

2.2、创建脚本

#win10

#建表

CREATE TABLE MYCAT_SEQUENCE (NAME VARCHAR(50) NOT NULL,current_value INT NOT

NULL,increment INT NOT NULL DEFAULT 100, PRIMARY KEY(NAME)) ENGINE=INNODB;

#新建函数 

DELIMITER $$

CREATE FUNCTION mycat_seq_currval(seq_name VARCHAR(50)) RETURNS VARCHAR(64)

DETERMINISTIC 

BEGIN

DECLARE retval VARCHAR(64);

SET retval=”-999999999,null”;

SELECT CONCAT(CAST(current_value AS CHAR),”,”,CAST(increment AS CHAR)) INTO retval FROM

MYCAT_SEQUENCE WHERE NAME = seq_name;

RETURN retval;

END $$

DELIMITER;

DELIMITER $$

CREATE FUNCTION mycat_seq_setval(seq_name VARCHAR(50),VALUE INTEGER) RETURNS VARCHAR(64)

DETERMINISTIC

BEGIN

UPDATE MYCAT_SEQUENCE

SET current_value = VALUE

WHERE NAME = seq_name;

RETURN mycat_seq_currval(seq_name);

END $$

DELIMITER ;

DELIMITER $$

CREATE FUNCTION mycat_seq_nextval(seq_name VARCHAR(50)) RETURNS VARCHAR(64)

DETERMINISTIC

BEGIN

UPDATE MYCAT_SEQUENCE

SET current_value = current_value + increment WHERE NAME = seq_name;

RETURN mycat_seq_currval(seq_name);

END $$

DELIMITER;

SELECT * FROM MYCAT_SEQUENCE

TRUNCATE TABLE MYCAT_SEQUENCE

##增加要用的序列

INSERT INTO MYCAT_SEQUENCE(NAME,current_value,increment) VALUES (‘ORDERS’, 400000,

100);

Java培训Mycat全局序列

2.3、修改配置

  • 修改配置文件sequence_db_conf.properties

vim sequence_db_conf.properties

意思是 ORDERS这个序列在dn1这个节点上,具体dn1节点是哪台机子,请参考schema.xml

  • 修改配置文件 server.xml

vim server.xml

  • 重启Mycat

2.4、 验证

多次插入数据,验证全局序列ID

insert into `orders`(id,amount,customer_id,order_type) values(next value for MYCATSEQ_ORDERS,1000,101,102);

重启Mycat后,再次插入数据,再验证。

Java培训Mycat全局序列

3、时间戳方式

用时间戳方式不会出现冲突问题,但长度有18位,比较长

Java培训Mycat全局序列

4、自主生成

可以根据业务逻辑组合,或者可以利用 redis的单线程原子性 incr来生成序列。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/93583.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

干货 | 数字经济创新创业——软件研究

下文整理自清华大学大数据能力提升项目能力提升模块课程“Innovation & Entrepreneurship for Digital Economy”(数字经济创新创业课程)的精彩内容。主讲嘉宾:Kris Singh: CEO at SRII, Palo Alto, CaliforniaVisiting Professor of Tsinghua Unive…

计算机毕设Python+Vue校园食堂订餐系统(程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【IntelliJ IDEA技巧】:如何生成.jar文件

问题描述: 由于上交给上级或者特殊使用,我们需要将jar文件提交给上级,那就是要学会如何生成jar文件,个人找了很久解决了问题,主要是网上太多参差不齐的回答,我觉着很浪费时间,当然有些也是比较好…

MySQL zip安装包 的安装过程

以前怎么安装的Mysql已经不记得了,感觉就是傻瓜式安装。这次又要用上了,发现和原先的记忆完全不一样了,也许是自己全忘了。这次记在这里,日后好参照,有需要的同学也可直接拿去。 1.下载,直接去官网吧 MyS…

人乳铁蛋白ELISA试剂盒操作注意事项及步骤丨艾美捷方案

人乳铁蛋白(LTF)ELISA试剂盒操作注意事项: 1.试剂应按标签说明书储存,使用前恢复到室温。稀稀过后的标准品应丢弃,不可保存。 2.实验中不用的板条应立即放回包装袋中,密封保存,以免变质。 3.不用的其它试剂应包装好…

基于Python+sqlite3实现(Web)图书管理系统【100010049】

*项目名称:图书管理系统 (LibraryManagementSystem) 一、系统目标 使用了Python作为语言,以django为后台,sqlite3作为数据库,UI基于bootstrap的图书管理系统,模拟图书管理的真实场景,考虑客观…

软件测试就业现状分析,2023是卷or润?

导读 自媒体大V卢克文11月的文章《从数据读疫情》中写道,“大约从2022年5月以后,身边的人,大量倾诉,他们的餐馆、旅行社、投资公司、运输公司出问题了,他们没钱了,每日还要还贷,他们很难过”。…

Java+MySQL基于SSM的会议交接平台的设计与实现 毕业设计

随着社会竞争压力的不断加强,企事业单位内部的会议都在不断的增加,有效的会议可以提高企事业内部的沟通,更好的做出符合战略目标的决策,但是传统的会议交接有一定的问题存在,首先就是必须面对面进行传达,其次就是对任务的安排和执行没有很好的记录,为了改变这些情况,于是我们提…

免疫佐剂CpG ODN说明——艾美捷CpG ODN 方案

免疫佐剂(immunoadjuvant),又称非特异性免疫增生剂,其本身不具有抗原性,但同抗原一起或者预先注射到机体后,能非特异性地改变机体对该抗原的特异性免疫应答。1925年Ramon首先发现在疫苗中加入某种其他物质可以提高抗原…

OpenCV-Python学习(17)—— OpenCV 图像像素类型转换与归一化(cv.normalize)

1. 学习目标 学习 OpenCV 图像像素的类型转换;学习 OpenCV 归一化函数。 2. OpenCV 图像像素的类型转换 由于【在 OpenCV-Python 中一切图像数据皆 numpy.array】,因此像素的类型转换可以直接使用 numpy 的类型转换方法。 2.1 将像素转换为 float32 i…

Windows 下 MongoDB 6 详细安装教程(图文结合)

​ MongoDB是一个基于分布式文件存储 [1] 的数据库。由C语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 ​ MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常…

为什么电子商务物流对电商商家的业务如此重要?

正是电子商务物流的推动推动了企业发展包括最大渠道在内的整体生态系统;店内提货、电子商务、分销商、经销商、合作伙伴和全球制造商,推动新客户的增长。电子商务巨头的目标是推动更多的销售并提高客户忠诚度。  无论是内部还是第三方物流公司,改进的电…

springboot simple (11) springboot protostuff

1 protostuff简介 protostuff是一个基于protobuf实现的序列化方法。 优点&#xff1a;不用写.proto文件。 2 springboot protobuf集成开发 第1步&#xff1a;pom文件引入&#xff1a; <dependency><groupId>io.protostuff</groupId><artifactId>pr…

CDGA|数据治理有哪些痛点,该如何应对呢?

数据治理核心目的,就是通过数据的治理,将数据以更加实用更加有价值的赋能使用者创造更大的价值或者是变现能力,但随之而来的问题也日益凸显。 1、数据质量良莠不齐。数据之多,使用之乱,造成的数据不一致,冗余重复等等,通常会使企业花费额外的成本。 2、数据的互联不强,缺乏统一…

95 C语言初阶练习题

CNT=函数调用的次数 do while 不管三七二十一直接进入循环 k=i+j就等于k=k(i+j)** 局部a只能在test函数内使用 &&并且 || 或者

基于java(springboot)广场舞团管理系统源码(java毕业设计)

基于java(springboot)广场舞团管理系统 广场舞团系统&#xff0c;是基于java编程语言&#xff0c;mysql毕业设计&#xff0c;springboot框架和idea工具开发&#xff0c;本系统分为用户&#xff0c;舞团管理者&#xff0c;管理员三个角色&#xff0c;用户可以注册登陆系统&…

对于新技术的发展而言,坚持长期主义,或许才是正道所在

从Meta股价的一路走低到扎克伯格发布的头显并不被用户买账&#xff0c;Facebook全力拥抱Meta正在经历一场过山车。   扎克伯格和他所带领下的Meta遭遇到的如此多的困境和难题&#xff0c;越来越多地让我们开始相信&#xff1a;所谓的元宇宙并非是一蹴而就的&#xff0c;它是一…

JUC并发编程第十四篇,StampedLock(邮戳锁)为什么比ReentrantReadWriteLock(读写锁)更快!

JUC并发编程第十四篇&#xff0c;StampedLock&#xff08;邮戳锁&#xff09;为什么比ReentrantReadWriteLock&#xff08;读写锁&#xff09;更快&#xff01;一、ReentrantReadWriteLock&#xff08;读写锁&#xff09;1、读写锁存在的意义&#xff1f;2、读写锁代码示例3、读…

orCAD Capture DRC规则设置及检查和报错修改

1.进入DRC设置界面: 如下图,依次选中“dsn→Tools→Design Rules Check” 或者 然后会跳出来一个提示框,点击Yes即可 2.进行DRC规则设置: 上面第二步结束之后,就进入到了DRC规则设置界面,主要有四个类别进行设置。如下图,分别是Design Rules Options、Electrriacl Rule…

致初学者:如何学好Python这门编程语言?

前言 对于很多Python这门编程语言的初学者&#xff0c;往往会面临以下问题&#xff1a; Python2和Python3我该学习哪一个&#xff1f; 是否要安装Linux系统学习Python&#xff1f; Python3有各种版本我该安装哪一个&#xff1f; 那么多的图书、视频和电子教程我该选择哪一个&a…