mycat全局序列号
【摘要】 1、全局序列化
Mycat支持的全局序列化主要包括 本地文件方式,数据库方式,本地时间戳方式。实际生产环境,建议还是使用数据库方式。
数据库方式配置:
<system><property name="sequnceHandlerType">1</property></system>其中0代表本地文件方式,1...
1、全局序列化
Mycat支持的全局序列化主要包括 本地文件方式,数据库方式,本地时间戳方式。实际生产环境,建议还是使用数据库方式。
数据库方式配置:
- <system><property name="sequnceHandlerType">1</property></system>
其中0代表本地文件方式,1代表数据库方式,2代表时间戳方式。 - 创建 MYCAT_SEQUENCE表
然后插入一条记录。CREATE TABLE `MYCAT_SEQUENCE` ( `name` varchar(50) NOT NULL, `current_value` int(11) NOT NULL, `increment` int(11) NOT NULL DEFAULT '100', PRIMARY KEY (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into MYCAT_SEQUENCE ('name','current_value','increment') values ('GLOBAL',10000,100); insert into MYCAT_SEQUENCE ('name','current_value','increment') values ('ORDER',10000,100);
不是在 MYCAT_SEQUENCE 增加了一条记录,Mycat 就会认这个序列化,而是必须在 sequence_db_conf.properties 文件中,做好配置。
然后可以在语句中可以这样写。
-
next value for MYCAT_SEQGLOBAL next value for MYCAT_SEQORDER
创建三个函数:
CREATE FUNCTION mycat_seq_currval(seq_name VARCHAR(50)) RETURNS varchar(64)
CHARSET utf8
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
CREATE FUNCTION mycat_seq_nextval(seq_name VARCHAR(50))
RETURNS varchar(64) CHARSET utf8
DETERMINISTIC
BEGIN
UPDATE MYCAT_SEQUENCE SET current_value = current_value + increment WHERE name = seq_name;
RETURN mycat_seq_currval(seq_name);
END
CREATE FUNCTION mycat_seq_setval(p_seq_name VARCHAR (50),p_value INTEGER)
RETURNS varchar(64) CHARSET utf8
DETERMINISTIC
BEGIN
UPDATE MYCAT_SEQUENCE SET current_value = p_value WHERE NAME = p_seq_name;
RETURN mycat_seq_currval(seq_name);
END
3、在需要分片的表上,在SQL语句时,需要指定,类似于:
insert into es_order( id,order_no ,其他字段) values ( next value for MYCATSEQ_GLOBAL,'20160828161720001',其他字段 )
文章来源: blog.csdn.net,作者:中间件兴趣圈,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/prestigeding/article/details/52702057
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)