Skip to content

Commit 0dbf9c6

Browse files
committed
fix
1 parent 875b9f3 commit 0dbf9c6

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

src/query/expression/src/utils/block_thresholds.rs

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,29 @@ impl BlockThresholds {
7878
return self.max_rows_per_block;
7979
}
8080

81-
total_rows.div_ceil(block_num_by_size)
81+
let mut rows_per_block = total_rows.div_ceil(block_num_by_size);
82+
let max_bytes_per_block = match rows_per_block {
83+
v if v < self.max_rows_per_block / 10 => {
84+
// If block rows < 100_000, max_bytes_per_block set to 200M
85+
2 * self.max_bytes_per_block
86+
}
87+
v if v < self.max_rows_per_block / 2 => {
88+
// If block rows < 500_000, max_bytes_per_block set to 150M
89+
3 * self.max_bytes_per_block / 2
90+
}
91+
v if v < self.min_rows_per_block => {
92+
// If block rows < 800_000, max_bytes_per_block set to 125M
93+
5 * self.max_bytes_per_block / 4
94+
}
95+
_ => self.max_bytes_per_block,
96+
};
97+
98+
if max_bytes_per_block > self.max_bytes_per_block {
99+
rows_per_block = std::cmp::max(
100+
total_rows / (std::cmp::max(total_bytes / max_bytes_per_block, 1)),
101+
1,
102+
);
103+
}
104+
rows_per_block
82105
}
83106
}

src/query/service/src/interpreters/interpreter_table_recluster.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -249,11 +249,8 @@ impl ReclusterTableInterpreter {
249249
let block_thresholds = tbl.get_block_thresholds();
250250
let total_bytes = recluster_info.removed_statistics.uncompressed_byte_size as usize;
251251
let total_rows = recluster_info.removed_statistics.row_count as usize;
252-
let block_size = settings.get_max_block_size()?;
253-
let rows_per_block = block_thresholds
254-
.calc_rows_per_block(total_bytes, total_rows)
255-
.max(block_size as usize);
256-
let total_partitions = std::cmp::max(total_rows / rows_per_block, 1000);
252+
let rows_per_block = block_thresholds.calc_rows_per_block(total_bytes, total_rows);
253+
let total_partitions = total_rows / rows_per_block;
257254

258255
let ast_exprs = tbl.resolve_cluster_keys(self.ctx.clone()).unwrap();
259256
let cluster_keys_len = ast_exprs.len();

0 commit comments

Comments
 (0)