mycat 自增id笔记

1、schema.xml添加表信息

<table name="tt2" primaryKey="id" autoIncrement="true" dataNode="dn3,dn2,dn1" rule="mod-long"/>

2、创建表

CREATE TABLE tt2 (
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
nm INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (id)
) ENGINE=MYISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

3、添加 sequence_conf.properties信息

TT2.HISIDS=
TT2.CURID=0
TT2.MINID=0
TT2.MAXID=1000000

4、重启 mycat

5、测试

INSERT INTO tt2 (nm) VALUES (1);

INSERT INTO tt2 (nm) VALUES (5);
SELECT * FROM tt2;

SELECT LAST_INSERT_ID();

 

 

主键生成策略 :http://blog.csdn.net/wangfanbb/article/details/50887108

  既然要分库分表那么全局唯一主键也是我们需要考虑的问题,我所知道的和有使用经验的有如下几种技术:

 

问题

可行性

基于Redis

单点问题,redis重启问题等

较高,公司有项目使用

给予DB(每次生成多个使用时去取出来)

单点问题,并发量问题

低并发,数据量较小的可以使用

UUID

暂用存储空间比较大,非可排序的,体现不出增长的趋势

较高

twitter snowflake

Xx年以后可能存在重复问题,需要配置生产参数

高,分布式的没单点故障问题,时间上是递增的。推荐

基于DB步长的方式

不是所有数据库都支持

  我选择的是snowflake。

也可参考 微信序列号生成器架构设计及演变:http://www.infoq.com/cn/articles/wechat-serial-number-generator-architecture。

 

posted on 2016-08-27 16:37  hclabxing  阅读(228)  评论(0编辑  收藏  举报

导航