CREATE TABLE
test
(
id
varchar(32) NOT NULL,
no
varchar(50) DEFAULT NULL,
mode
varchar(50) NOT NULL,
type
varchar(50) NOT NULL,
createTime
datetime NOT NULL,
updateTime
datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id
,createTime
) /*T![clustered_index] NONCLUSTERED */,
KEYidx_createTime
(createTime
),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin /*T! SHARD_ROW_ID_BITS=4 PRE_SPLIT_REGIONS=4 */
非聚簇表+SHARD_ROW_ID_BITS 打散,或者
CREATE TABLE
test
(
pk
bigint(20) AUTO_RANDOM NOT NULL,
id
varchar(32) NOT NULL,
no
varchar(50) DEFAULT NULL,
mode
varchar(50) NOT NULL,
type
varchar(50) NOT NULL,
createTime
datetime NOT NULL,
updateTime
datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (pk
) /*T![clustered_index] CLUSTERED */,
unique key(id
,createTime
)
KEYidx_createTime
(createTime
),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
聚簇表+auto random 打散。
你每天的数据量都有1-4亿,我很难想象表结构不出问题的话,这些数据会集中在其中的1-3台tikv上。
我上面那个2.6亿的表,就是 NONCLUSTERED +SHARD_ROW_ID_BITS =3.按天查也不会出现有其他tikv在围观别的tikv干活的情况。时间片再小一点到是有可能。