在单库单表的环境下,基本上大部分为了方便,都是用的数据库自带的自增ID来作为主键。
然而在分库分表后这种方式还能用吗?
不能,现在一个表在多个库中,意味着每个库的自增ID都是一样的。
今天介绍下常用的一些分布式环境下全局ID的方案,当然很多是mycat自带的。
本地方式
在sequence_conf.properties中可配置ID的起始位置以及最大值等等。
默认就是使用这种方式,具体配置大家可以看里面的值。
然后修改server.xml, sequnceHandlerType 配置为0表示使用本地文件读取。
<system><property name="sequnceHandlerType">0</property></system>
使用方式如下:
insert into user(id,name) values(next value for MYCATSEQ_GLOBAL,’test’);
这种方式有一个致命的缺点就是在 mycat 重启后,配置文件中癿 sequence 会恢复到初始值。
优点就是本地加载,读取速度较快。
既然重启后会