Mycat全域性序列號

2021-08-20 08:22:19 字數 1531 閱讀 2522

全域性序列號是mycat提供的乙個新功能,為了實現分庫分表情況下,表的主鍵是全域性唯一,而預設的mysql的自增長主鍵無法滿足這個要求。全域性序列號的語法符合標準sql規範。

其格式為:

next value for mycatseq_global

其中mycatseq_global是序列號的名字,mycat自動建立新的序列號,免去了開發的複雜度,另外,mycat也提供了乙個全域性的序列號,名稱為:mycatseq_global。

注意,mycatseq_必須大寫才能正確識別。

mycat目前已經提供了乙個本地配置版的實現,下面是配置說明:

配置說明

配置檔案:sequence_conf.properties

格式說明:

***.hisids= 1-100,501-800,3001-5000 //使用過得歷史分段

***.minid=10001 //當前可用分段的最小值

***.maxid=20000 //當前可用分段的最大值

***.curid=10000 //當前可用分段的當前值

全域性sequence配置如下:

global.hisids=

global.minid=1

global.maxid=50000

global.curid=10000

自定義sequence配置如下:

my1.hisids=

my1.minid=101

my1.maxid=200

my1.curid=152

mysql資料庫**儲存全域性序列號的配置如下:

serfver.xml中啟用

1
在某個分割槽(datanode)資料庫上建立序列號相關的**和函式,sql指令碼在doc目錄下的sequnce-sql.txt中,需要在資料庫上而非mycat上執行。

mycat_home/conf/quence_db_conf.properties 中記錄了sequnce所存放的db對應的配置資訊。

#sequence stored in datanode

global=dn1

company=dn1

customer=dn1

在sequnce表中,插入相應的sequnce記錄,並確定其初始值,以及增長步長,步長建議乙個合適的範圍,比如50-500,需要在資料庫上而非mycat上執行。

insert into mycat_sequence values ('global', 0, 100);

修改sequnce的當前值為某個新值,需要在資料庫上而非mycat上執行。

select mycat_seq_curval('global');

高併發時,最好不用本地配置方式實現全域性序列號,有概率會自增失敗。所以,一般測試環境可以用本地配置方式,生產環境用資料庫配置方式

Mycat快速入門 三 全域性序列號

在實現分庫分表的情況下,資料庫自增主鍵已無法保證自增主鍵的全域性唯一。為此,mycat 提供了全域性 sequence,並且提供了包含本地配置和資料庫配置等多種實現方式。序列號處理器型別,感覺 sequnce 序列號是不是少了個e字母,應該是 sequence 關於全域性序列號的測試是在mycat分...

Mycat 全域性序列

在實現分庫分表的情況下,資料庫自增主鍵已無法保證主鍵的全域性唯一。所以,mact提供了全區sequence,並且提供了包含本地配置和資料庫配置等多種實現方式。1.本地檔案 原理 此方式mycat將sequence配置到檔案中,當使用到sequence中的配置後,mycat會更下classpath中的...

mycat 全域性序列

解決主鍵衝突問題 例如id自增的order表,如果分布式情況下不處理的話,當每個表的第一條資料id都是1。怎麼確保id唯一呢?解決辦法 1 本地檔案 不推薦 2 資料庫方式 推薦 3 時間戳 位數較多,佔空間多,並且不安全 資料庫方式詳解 原理 利用資料庫的乙個表來進行計數累加。但是並不是每次生成序...