数据库中间件MyCat之主键值生成方式详

北京看白癜风医院哪里比较好 http://pf.39.net/bdfyy/bdfzg/150722/4661155.html

本节就演示上节提到的主键6种生成方式

(一)主键值生成方式

①介绍

在实现分库分表的情况下,原来是一张表就分到多个库上面和多个表上面,各个表都有自增,无法保证数据库自增主键自增主键的全局唯一。为此,MyCat提供了全局sequence,并且提供了包含本地配置和数据库配置等多种实现方式。

CREATETABLEt_customer(

idBIGINTPRIMARYKEY,

namevarchar()notnull,

provinceintnotnull

);

tablename="t_customer"primaryKey="id"autoIncrement="true"dataNode="dn1,dn2,dn3"rule="sharding-by-province"/

②本地文件方式

原理:此方式MyCAT将sequence配置到文件中,当使用到sequence中的配置后,MyCAT会更新conf中的sequence_conf.properties文件中sequence当前的值。

配置方式:

1.在sequence_conf.properties文件中做如下配置

HISIDS历史ID

MIXID最小ID

MAXID最大ID

CURID当前ID

GLOBAL.HISIDS=

GLOBAL.MINID=1GLOBAL.MAXID=0000000GLOBAL.CURID=0

其中HISIDS表示使用过的历史分段(一般无特殊需要可不配置),MINID表示最小ID值,MAXID表示最大ID值,CURID表示当前ID值。

2.server.xml中配置

注:sequnceHandlerType需要配置为0,表示使用本地文件方式。

systempropertyname="sequnceHandlerType"0/property/system

使用示例:

缺点:当MyCAT重新发布后,配置文件中的sequence会恢复到初始值。优点:本地加载,读取速度较快。为表配置主键自增值的序列。如果需要重启,需要先将这个文件进行拷贝出来,修改后,在拷贝到这个位置。

insertintotable1(id,name)values(nextvalueforMYCATSEQ_GLOBAL,‘test’);

为表配置主键自增值的序列:

规则:在sequence_conf.properties中配置以表名为名的序列。

T_COMPANY.CURID=

T_COMPANY.MINID=1

T_COMPANY.MAXID=0000000

就可以使用了。

tablename="t_


转载请注明:http://www.aierlanlan.com/tzrz/2132.html