W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Mycat2支持常用的(自動(dòng))HASH
型分片算法也兼容1.6
的內(nèi)置的(cobar
)分片算法.
HASH
型分片算法默認(rèn)要求集群名字以c
為前綴,數(shù)字為后綴,c0
就是分片表第一個(gè)節(jié)點(diǎn),c1
就是第二個(gè)節(jié)點(diǎn).該命名規(guī)則允許用戶手動(dòng)改變.
Mycat2 Hash
型分片算法多數(shù)基于MOD_HASH(MOD
對應(yīng)JAVA
的%
運(yùn)算,實(shí)際上是取余運(yùn)算,而且abs(n)/count等價(jià)于abs(n/count)
Mycat2 Hash
型分片算法對于值的處理,總是把分片值轉(zhuǎn)換到列屬性的數(shù)據(jù)類型再運(yùn)算,而1.x
系列的分片算法統(tǒng)一轉(zhuǎn)換到字符串類型再運(yùn)算且只能根據(jù)一個(gè)分片字段計(jì)算出存儲(chǔ)節(jié)點(diǎn)下標(biāo)。
Mycat2 Hash
型分片算法適用于等價(jià)條件查詢,而1.x
系列由于含有用戶經(jīng)驗(yàn)的路由規(guī)則。
分片算法 | 描述 | 分庫 | 分表 | 數(shù)值類型 |
---|---|---|---|---|
MOD_HASH | 取模哈希 | 是 | 是 | 數(shù)值,字符串 |
UNI_HASH | 取模哈希 | 是 | 是 | 數(shù)值,字符串 |
RIGHT_SHIFT | 右移哈希 | 是 | 是 | 數(shù)值 |
RANGE_HASH | 兩字段其一取模 | 是 | 是 | 數(shù)值,字符串 |
YYYYMM | 按年月哈希 | 是 | 是 | DATE,DATETIME |
YYYYDD | 按年月哈希 | 是 | 是 | DATE,DATETIME |
YYYYWEEK | 按年周哈希 | 是 | 是 | DATE,DATETIME |
HASH | 取模哈希 | 是 | 是 | 數(shù)值,字符串,如果不是,則轉(zhuǎn)換成字符串 |
MM | 按月哈希 | 否 | 是 | DATE,DATETIME |
DD | 按日期哈希 | 否 | 是 | DATE,DATETIME |
MMDD | 按月日哈希 | 是 | 是 | DATE,DATETIME |
WEEK | 按周哈希 | 否 | 是 | DATE,DATETIME |
STR_HASH | 字符串哈希 | 是 | 是 | 字符串 |
所有分片算法都可以用于分表,但是涉及單獨(dú)按周、月的HASH
算法不能用于分庫
/*+ mycat:createTable{
"schemaName":"db1",
"shadingTable":{
"createTableSQL":"create table travelrecord(id int)",
"function":{
"properties":{
"dbNum":2,
"mappingFormat":"c${targetIndex}/db1_${dbIndex}/travelrecord_${tableIndex}",
"tableNum":2,
"tableMethod":"mod_hash(id)",
"storeNum":2,
"dbMethod":"mod_hash(id)"
}
}
},
"tableName":"travelrecord"
} */;
mappingFormat
使用樣例(文件配置)
"shardingTables":{
"log":{
"createTableSQL":"CREATE TABLE cloud.log (\n\t`id` BIGINT(20) DEFAULT NULL,\n\t`user_id` BIGINT(20) DEFAULT NULL,\n\t`service_id` INT(11) DEFAULT NULL,\n\t`submit_time` DATETIME DEFAULT NULL\n) ENGINE = INNODB CHARSET = utf8\nDBPARTITION BY YYYYDD(submit_time) DBPARTITIONS 2\nTBPARTITION BY MOD_HASH(id) TBPARTITIONS 8",
"function":{
"properties":{
"dbNum":"2",
"mappingFormat":"c${targetIndex}/cloud_${java.time.LocalDate.now().plus(dbIndex.toInteger()).toString().replace(\"-\",\"\")}/log_${tableIndex}",
"tableNum":"8",
"tableMethod":"MOD_HASH(id)",
"storeNum":2,
"dbMethod":"YYYYDD(submit_time)"
}
}
}
}
targetIndex
是目標(biāo)下標(biāo)tableIndex
是物理分表下標(biāo)dbIndex
是物理分庫下標(biāo)index
是總物理分表下標(biāo)Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: