Skip to content

Commit 0b7fb42

Browse files
authored
Merge pull request ClickHouse#88451 from ClickHouse/backport/25.8/88339
Backport ClickHouse#88339 to 25.8: fix threads count for inserts
2 parents 8d516fc + 82c2b31 commit 0b7fb42

File tree

3 files changed

+65
-1
lines changed

3 files changed

+65
-1
lines changed

src/Interpreters/InterpreterInsertQuery.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -726,7 +726,7 @@ QueryPipeline InterpreterInsertQuery::buildInsertPipeline(ASTInsertQuery & query
726726

727727
QueryPipeline pipeline = QueryPipeline(std::move(chain));
728728

729-
pipeline.setNumThreads(max_insert_threads);
729+
pipeline.setNumThreads(max_threads);
730730
pipeline.setConcurrencyControl(settings[Setting::use_concurrency_control]);
731731

732732
if (query.hasInlinedData() && !async_insert)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
max_threads: 1 max_insert_threads: 1
2+
1
3+
max_threads: 1 max_insert_threads: 5
4+
1
5+
max_threads: 10 max_insert_threads: 1
6+
10
7+
max_threads: 10 max_insert_threads: 5
8+
10
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
#!/usr/bin/env bash
2+
# Tags: no-object-storage, no-parallel, no-fasttest
3+
4+
# no-object-storage: s3 has 20 more threads
5+
# no-parallel: it checks the number of threads, which can be lowered in presence of other queries
6+
7+
CUR_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
8+
# shellcheck source=../shell_config.sh
9+
. "$CUR_DIR"/../shell_config.sh
10+
11+
12+
cat <<EOF | $CLICKHOUSE_CLIENT -n $SETTINGS
13+
drop table if exists testX;
14+
drop table if exists testXA;
15+
drop table if exists testXB;
16+
drop table if exists testXC;
17+
18+
create table testX (A Int64) engine=MergeTree order by tuple();
19+
20+
create materialized view testXA engine=MergeTree order by tuple() as select sleep(0.1) from testX;
21+
create materialized view testXB engine=MergeTree order by tuple() as select sleep(0.2), throwIf(A=1) from testX;
22+
create materialized view testXC engine=MergeTree order by tuple() as select sleep(0.1) from testX;
23+
EOF
24+
25+
for max_threads in 1 10; do
26+
for max_insert_threads in 1 5; do
27+
echo "max_threads: $max_threads max_insert_threads: $max_insert_threads"
28+
29+
QUERY_ID="03652_query_id_$RANDOM"
30+
SETTINGS="--query_id=$QUERY_ID "
31+
SETTINGS="$SETTINGS --max_threads=$max_threads "
32+
SETTINGS="$SETTINGS --max_insert_threads=$max_insert_threads "
33+
34+
SETTINGS="$SETTINGS --max_block_size=10 "
35+
SETTINGS="$SETTINGS --min_insert_block_size_rows=10 "
36+
SETTINGS="$SETTINGS --materialized_views_ignore_errors=1 "
37+
SETTINGS="$SETTINGS --parallel_view_processing=1 "
38+
SETTINGS="$SETTINGS --log_queries=1 "
39+
SETTINGS="$SETTINGS --send_logs_level=error "
40+
41+
$CLICKHOUSE_CLIENT -q 'select * from numbers(50) format TSV' | $CLICKHOUSE_CLIENT $SETTINGS -q 'insert into testX FORMAT TSV'
42+
43+
$CLICKHOUSE_CLIENT -q 'system flush logs system.query_log;'
44+
45+
cat <<EOF | $CLICKHOUSE_CLIENT
46+
select
47+
if(peak_threads_usage >= 10, 10, peak_threads_usage),
48+
from system.query_log where
49+
current_database = currentDatabase() and
50+
type != 'QueryStart' and
51+
query_id = '$QUERY_ID'
52+
order by ALL;
53+
EOF
54+
55+
done
56+
done

0 commit comments

Comments
 (0)