mycat全局序列号

it2022-05-05  122

1、全局序列化   1) Mycat支持的全局序列化主要包括 本地文件方式,数据库方式,本地时间戳方式。实际生产环境,建议还是使用数据库方式。   2)数据库方式配置    1、 <system><property name="sequnceHandlerType">1</property></system>         其中0代表本地文件方式,1代表数据库方式,2代表时间戳方式。    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',其他字段  )

转载于:https://www.cnblogs.com/dingwmz/p/5816654.html

相关资源:各显卡算力对照表!

最新回复(0)