Skip to content

Commit 2543b56

Browse files
authored
[Optimize](Row store) pick #37145, #38236 (#38932)
1 parent bc644cb commit 2543b56

File tree

22 files changed

+183
-13
lines changed

22 files changed

+183
-13
lines changed

be/src/common/config.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1053,8 +1053,6 @@ DEFINE_mInt64(max_tablet_io_errors, "-1");
10531053
DEFINE_Int32(tablet_path_check_interval_seconds, "-1");
10541054
DEFINE_mInt32(tablet_path_check_batch_size, "1000");
10551055

1056-
// Page size of row column, default 4KB
1057-
DEFINE_mInt64(row_column_page_size, "4096");
10581056
// it must be larger than or equal to 5MB
10591057
DEFINE_mInt32(s3_write_buffer_size, "5242880");
10601058
// The timeout config for S3 buffer allocation

be/src/common/config.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1097,8 +1097,6 @@ DECLARE_mInt64(max_tablet_io_errors);
10971097
DECLARE_Int32(tablet_path_check_interval_seconds);
10981098
DECLARE_mInt32(tablet_path_check_batch_size);
10991099

1100-
// Page size of row column, default 4KB
1101-
DECLARE_mInt64(row_column_page_size);
11021100
// it must be larger than or equal to 5MB
11031101
DECLARE_mInt32(s3_write_buffer_size);
11041102
// The timeout config for S3 buffer allocation

be/src/olap/rowset/segment_v2/options.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ namespace segment_v2 {
2424

2525
static constexpr size_t DEFAULT_PAGE_SIZE = 1024 * 1024; // default size: 1M
2626

27+
constexpr long ROW_STORE_PAGE_SIZE_DEFAULT_VALUE = 16384; // default row column page size: 16KB
28+
2729
struct PageBuilderOptions {
2830
size_t data_page_size = DEFAULT_PAGE_SIZE;
2931

be/src/olap/rowset/segment_v2/segment_writer.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,8 +256,11 @@ Status SegmentWriter::init(const std::vector<uint32_t>& col_ids, bool has_key) {
256256

257257
if (column.is_row_store_column()) {
258258
// smaller page size for row store column
259-
opts.data_page_size = config::row_column_page_size;
259+
auto page_size = _tablet_schema->row_store_page_size();
260+
opts.data_page_size =
261+
(page_size > 0) ? page_size : segment_v2::ROW_STORE_PAGE_SIZE_DEFAULT_VALUE;
260262
}
263+
261264
std::unique_ptr<ColumnWriter> writer;
262265
RETURN_IF_ERROR(ColumnWriter::create(opts, &column, _file_writer, &writer));
263266
RETURN_IF_ERROR(writer->init());

be/src/olap/rowset/segment_v2/vertical_segment_writer.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,8 +213,11 @@ Status VerticalSegmentWriter::_create_column_writer(uint32_t cid, const TabletCo
213213

214214
if (column.is_row_store_column()) {
215215
// smaller page size for row store column
216-
opts.data_page_size = config::row_column_page_size;
216+
auto page_size = _tablet_schema->row_store_page_size();
217+
opts.data_page_size =
218+
(page_size > 0) ? page_size : segment_v2::ROW_STORE_PAGE_SIZE_DEFAULT_VALUE;
217219
}
220+
218221
std::unique_ptr<ColumnWriter> writer;
219222
RETURN_IF_ERROR(ColumnWriter::create(opts, &column, _file_writer, &writer));
220223
RETURN_IF_ERROR(writer->init());

be/src/olap/tablet_meta.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,9 @@ TabletMeta::TabletMeta(int64_t table_id, int64_t partition_id, int64_t tablet_id
298298
if (tablet_schema.__isset.store_row_column) {
299299
schema->set_store_row_column(tablet_schema.store_row_column);
300300
}
301+
if (tablet_schema.__isset.row_store_page_size) {
302+
schema->set_row_store_page_size(tablet_schema.row_store_page_size);
303+
}
301304
if (tablet_schema.__isset.skip_write_index_on_load) {
302305
schema->set_skip_write_index_on_load(tablet_schema.skip_write_index_on_load);
303306
}

be/src/olap/tablet_schema.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -993,6 +993,7 @@ void TabletSchema::init_from_pb(const TabletSchemaPB& schema, bool ignore_extrac
993993
_sort_type = schema.sort_type();
994994
_sort_col_num = schema.sort_col_num();
995995
_compression_type = schema.compression_type();
996+
_row_store_page_size = schema.row_store_page_size();
996997
_schema_version = schema.schema_version();
997998
// Default to V1 inverted index storage format for backward compatibility if not specified in schema.
998999
if (!schema.has_inverted_index_storage_format()) {
@@ -1051,6 +1052,7 @@ void TabletSchema::build_current_tablet_schema(int64_t index_id, int32_t version
10511052
_skip_write_index_on_load = ori_tablet_schema.skip_write_index_on_load();
10521053
_sort_type = ori_tablet_schema.sort_type();
10531054
_sort_col_num = ori_tablet_schema.sort_col_num();
1055+
_row_store_page_size = ori_tablet_schema.row_store_page_size();
10541056

10551057
// copy from table_schema_param
10561058
_schema_version = version;
@@ -1204,6 +1206,7 @@ void TabletSchema::to_schema_pb(TabletSchemaPB* tablet_schema_pb) const {
12041206
tablet_schema_pb->set_sort_col_num(_sort_col_num);
12051207
tablet_schema_pb->set_schema_version(_schema_version);
12061208
tablet_schema_pb->set_compression_type(_compression_type);
1209+
tablet_schema_pb->set_row_store_page_size(_row_store_page_size);
12071210
tablet_schema_pb->set_version_col_idx(_version_col_idx);
12081211
tablet_schema_pb->set_inverted_index_storage_format(_inverted_index_storage_format);
12091212
}
@@ -1505,6 +1508,7 @@ bool operator==(const TabletSchema& a, const TabletSchema& b) {
15051508
if (a._disable_auto_compaction != b._disable_auto_compaction) return false;
15061509
if (a._enable_single_replica_compaction != b._enable_single_replica_compaction) return false;
15071510
if (a._store_row_column != b._store_row_column) return false;
1511+
if (a._row_store_page_size != b._row_store_page_size) return false;
15081512
if (a._skip_write_index_on_load != b._skip_write_index_on_load) return false;
15091513
return true;
15101514
}

be/src/olap/tablet_schema.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#include "common/status.h"
3737
#include "gutil/stringprintf.h"
3838
#include "olap/olap_common.h"
39+
#include "olap/rowset/segment_v2/options.h"
3940
#include "runtime/define_primitive_type.h"
4041
#include "runtime/descriptors.h"
4142
#include "util/string_util.h"
@@ -338,6 +339,8 @@ class TabletSchema {
338339
void set_version_col_idx(int32_t version_col_idx) { _version_col_idx = version_col_idx; }
339340
int32_t version_col_idx() const { return _version_col_idx; }
340341
segment_v2::CompressionTypePB compression_type() const { return _compression_type; }
342+
void set_row_store_page_size(long page_size) { _row_store_page_size = page_size; }
343+
long row_store_page_size() const { return _row_store_page_size; }
341344

342345
const std::vector<TabletIndex>& indexes() const { return _indexes; }
343346
bool has_inverted_index() const {
@@ -482,6 +485,7 @@ class TabletSchema {
482485
size_t _num_rows_per_row_block = 0;
483486
CompressKind _compress_kind = COMPRESS_NONE;
484487
segment_v2::CompressionTypePB _compression_type = segment_v2::CompressionTypePB::LZ4F;
488+
long _row_store_page_size = segment_v2::ROW_STORE_PAGE_SIZE_DEFAULT_VALUE;
485489
size_t _next_column_unique_id = 0;
486490
std::string _auto_increment_column;
487491

fe/fe-core/src/main/java/org/apache/doris/alter/RollupJobV2.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,8 @@ protected void runPendingJob() throws AlterCancelException {
278278
tbl.getTimeSeriesCompactionEmptyRowsetsThreshold(),
279279
tbl.getTimeSeriesCompactionLevelThreshold(),
280280
tbl.storeRowColumn(),
281-
binlogConfig, objectPool);
281+
binlogConfig, objectPool,
282+
tbl.rowStorePageSize());
282283
createReplicaTask.setBaseTablet(tabletIdMap.get(rollupTabletId), baseSchemaHash);
283284
if (this.storageFormat != null) {
284285
createReplicaTask.setStorageFormat(this.storageFormat);

fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeJobV2.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,8 @@ protected void runPendingJob() throws AlterCancelException {
283283
tbl.getTimeSeriesCompactionEmptyRowsetsThreshold(),
284284
tbl.getTimeSeriesCompactionLevelThreshold(),
285285
tbl.storeRowColumn(),
286-
binlogConfig, objectPool);
286+
binlogConfig, objectPool,
287+
tbl.rowStorePageSize());
287288

288289
createReplicaTask.setBaseTablet(partitionIndexTabletMap.get(partitionId, shadowIdxId)
289290
.get(shadowTabletId), originSchemaHash);

0 commit comments

Comments
 (0)