创建一张表并指定region的个数,但是region为啥都分配到一个节点上

【 TiDB 使用环境】生产环境
问题:创建一张表并指定region的个数,但是region都分配到一个节点上
配置:生产tidb集群,tikv和pd3节点,tiflash 2节点,硬件32核cpu 32G内存 500G FC存储(HDD和sdd混合)
截图:
CREATE TABLE requests (
request_id bigint(20) NOT NULL,
last_update_date datetime DEFAULT NULL,
last_updated_by bigint(20) DEFAULT NULL,
request_date datetime DEFAULT NULL,
requested_by bigint(20) DEFAULT NULL,
phase_code varchar(1) DEFAULT NULL,
status_code varchar(1) DEFAULT NULL,
priority_request_id bigint(20) DEFAULT NULL,
priority bigint(20) DEFAULT NULL,
requested_start_date datetime DEFAULT NULL,
hold_flag varchar(1) DEFAULT NULL,
enforce_seriality_flag varchar(1) DEFAULT NULL,
single_thread_flag varchar(1) DEFAULT NULL,
has_sub_request varchar(1) DEFAULT NULL,
is_sub_request varchar(1) DEFAULT NULL,
implicit_code varchar(1) DEFAULT NULL,
update_protected varchar(1) DEFAULT NULL,
queue_method_code varchar(1) DEFAULT NULL,
argument_input_method_code varchar(1) DEFAULT NULL,
oracle_id bigint(20) DEFAULT NULL,
program_application_id bigint(20) DEFAULT NULL,
concurrent_program_id bigint(20) DEFAULT NULL,
responsibility_application_id bigint(20) DEFAULT NULL,
responsibility_id bigint(20) DEFAULT NULL,
number_of_arguments smallint(6) DEFAULT NULL,
number_of_copies bigint(20) DEFAULT NULL,
save_output_flag varchar(1) DEFAULT NULL,
nls_compliant varchar(1) DEFAULT NULL,
last_update_login bigint(20) DEFAULT NULL,
nls_language varchar(30) DEFAULT NULL,
nls_territory varchar(30) DEFAULT NULL,
printer varchar(30) DEFAULT NULL,
print_style varchar(30) DEFAULT NULL,
print_group varchar(1) DEFAULT NULL,
request_class_application_id bigint(20) DEFAULT NULL,
concurrent_request_class_id bigint(20) DEFAULT NULL,
parent_request_id bigint(20) DEFAULT NULL,
conc_login_id bigint(20) DEFAULT NULL,
language_id bigint(20) DEFAULT NULL,
description varchar(240) DEFAULT NULL,
req_information varchar(240) DEFAULT NULL,
resubmit_interval decimal(15,10) DEFAULT NULL,
resubmit_interval_unit_code varchar(30) DEFAULT NULL,
resubmit_interval_type_code varchar(30) DEFAULT NULL,
resubmit_time varchar(8) DEFAULT NULL,
resubmit_end_date datetime DEFAULT NULL,
resubmitted varchar(1) DEFAULT NULL,
controlling_manager bigint(20) DEFAULT NULL,
actual_start_date datetime DEFAULT NULL,
actual_completion_date datetime DEFAULT NULL,
completion_text varchar(240) DEFAULT NULL,
outcome_product varchar(20) DEFAULT NULL,
outcome_code bigint(20) DEFAULT NULL,
cpu_seconds decimal(15,3) DEFAULT NULL,
logical_ios bigint(20) DEFAULT NULL,
physical_ios bigint(20) DEFAULT NULL,
logfile_name varchar(255) DEFAULT NULL,
logfile_node_name varchar(30) DEFAULT NULL,
outfile_name varchar(255) DEFAULT NULL,
outfile_node_name varchar(30) DEFAULT NULL,
argument_text varchar(240) DEFAULT NULL,
argument1 varchar(240) DEFAULT NULL,
argument2 varchar(240) DEFAULT NULL,
argument3 varchar(240) DEFAULT NULL,
argument4 varchar(240) DEFAULT NULL,
argument5 varchar(240) DEFAULT NULL,
argument6 varchar(240) DEFAULT NULL,
argument7 varchar(240) DEFAULT NULL,
argument8 varchar(240) DEFAULT NULL,
argument9 varchar(240) DEFAULT NULL,
argument10 varchar(240) DEFAULT NULL,
argument11 varchar(240) DEFAULT NULL,
argument12 varchar(240) DEFAULT NULL,
argument13 varchar(240) DEFAULT NULL,
argument14 varchar(240) DEFAULT NULL,
argument15 varchar(240) DEFAULT NULL,
argument16 varchar(240) DEFAULT NULL,
argument17 varchar(240) DEFAULT NULL,
argument18 varchar(240) DEFAULT NULL,
argument19 varchar(240) DEFAULT NULL,
argument20 varchar(240) DEFAULT NULL,
argument21 varchar(240) DEFAULT NULL,
argument22 varchar(240) DEFAULT NULL,
argument23 varchar(240) DEFAULT NULL,
argument24 varchar(240) DEFAULT NULL,
argument25 varchar(240) DEFAULT NULL,
crm_thrshld bigint(20) DEFAULT NULL,
crm_tstmp datetime DEFAULT NULL,
critical varchar(1) DEFAULT NULL,
request_type varchar(1) DEFAULT NULL,
oracle_process_id varchar(30) DEFAULT NULL,
oracle_session_id bigint(20) DEFAULT NULL,
os_process_id varchar(240) DEFAULT NULL,
print_job_id varchar(240) DEFAULT NULL,
output_file_type varchar(4) DEFAULT NULL,
release_class_app_id double DEFAULT NULL,
release_class_id double DEFAULT NULL,
stale_date datetime DEFAULT NULL,
cancel_or_hold varchar(1) DEFAULT NULL,
notify_on_pp_error varchar(255) DEFAULT NULL,
cd_id double DEFAULT NULL,
request_limit varchar(1) DEFAULT NULL,
crm_release_date datetime DEFAULT NULL,
post_request_status varchar(1) DEFAULT NULL,
completion_code varchar(30) DEFAULT NULL,
increment_dates varchar(1) DEFAULT NULL,
restart varchar(1) DEFAULT NULL,
enable_trace varchar(1) DEFAULT NULL,
resub_count double DEFAULT NULL,
nls_codeset varchar(30) DEFAULT NULL,
ofile_size bigint(20) DEFAULT NULL,
lfile_size bigint(20) DEFAULT NULL,
stale varchar(1) DEFAULT NULL,
security_group_id double DEFAULT NULL,
resource_consumer_group varchar(30) DEFAULT NULL,
exp_date datetime DEFAULT NULL,
queue_app_id bigint(20) DEFAULT NULL,
queue_id bigint(20) DEFAULT NULL,
ops_instance bigint(20) DEFAULT NULL,
interim_status_code varchar(1) DEFAULT NULL,
root_request_id bigint(20) DEFAULT NULL,
origin varchar(1) DEFAULT NULL,
nls_numeric_characters varchar(2) DEFAULT NULL,
pp_start_date datetime DEFAULT NULL,
pp_end_date datetime DEFAULT NULL,
org_id bigint(20) DEFAULT NULL,
run_number int(11) DEFAULT NULL,
node_name1 varchar(30) DEFAULT NULL,
node_name2 varchar(30) DEFAULT NULL,
connstr1 varchar(255) DEFAULT NULL,
connstr2 varchar(255) DEFAULT NULL
)SHARD_ROW_ID_BITS=4 PRE_SPLIT_REGIONS=4;

image

tidb_scatter_region=on 开启这个就会均分调度

2 个赞

默认异步的,设置tidb_scatter_region=on后会等调度完后再返回创建成功。

1 个赞

大佬,在开启region均匀分布后,原来100w的数据插入耗时49s现在变成50s,插入效率没有提升哈

节点分布:
image

得让插入的数据落到多个region范围才行,如果只在1 2个上打散了也没用

1 个赞

使用这个参数tidb_scatter_region=on

SHARD_ROW_ID_BITS=4 PRE_SPLIT_REGIONS=4; 我测过这个,感觉没啥用

tidb_scatter_region=on

你这个表没主键,有主键可以考虑直接用cluster聚簇表,速度应该还会快很多,别折腾SHARD_ROW_ID_BITS=4 PRE_SPLIT_REGIONS=4这种东西了

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。