
Skill
doris-debug-compaction
resolve Apache Doris compaction lag
Description
Use for Doris -235 / too many versions and compaction lag. Error raised in RowsetBuilder::check_tablet_version_count when version_count > max_tablet_version_num (default 2000) or meta serialize size limit.
SKILL.md
Compaction / Versions
Code
be/src/storage/rowset_builder.cpp:
version_count > max_version_config→Status::Error<TOO_MANY_VERSION>(...)- Suggests reduce load frequency or raise
max_tablet_version_num/time_series_max_tablet_version_numinbe.conf - Near limit triggers cumulative compaction submit
Defaults (config.cpp): max_tablet_version_num=2000, time_series_max_tablet_version_num=20000.
Causes
| ID | Cause | Evidence | Fix direction |
|---|---|---|---|
| A | Ingest rate > compaction throughput | version_count rising; compaction score growing | Reduce ingest frequency or increase compaction threads |
| B | Disk IO bottleneck | iostat shows disk util > 90% | Move WAL to separate disk; add compaction disks |
| C | max_tablet_version_num too low for workload | -235 on normal ingest rates | Raise limit (temporary), then fix root cause |
| D | Single-tablet hotspot | One tablet has 10× versions of peers | Partition / bucket key skew |
Actions
- Confirm with
./scripts/doris-debug log-grep be/log --pack versions - Check compaction throughput:
./scripts/doris-debug be-metrics --be http://$BE:8040 --grep compaction - Check disk IO:
iostat -x 1 - Slow ingest / enlarge group commit batches
- Raising
max_tablet_version_numis a temporary valve — fix ingest vs compaction balance
./scripts/doris-debug be-metrics --be http://$BE:8040 --grep compaction
Compaction knobs
# be.conf
max_tablet_version_num = 2000 # hard cap, raise only as stopgap
time_series_max_tablet_version_num = 20000 # separate cap for time-series tables
max_cumulative_compaction_threads = -1 # -1 = auto based on CPU cores
compaction_task_num_per_disk = 4 # per-disk concurrent compaction tasks
compaction_tablet_size_threshold = 107374182400 # 100GB — above this, skip base compaction
Source
be/src/storage/rowset_builder.cpp—-235errorbe/src/common/config.cpp— all compaction config defaultsbe/src/olap/cumulative_compaction_policy.cpp— score calculation
More skills from the doris-skills repository
View all 14 skillsdoris-architecture-advisor
design Apache Doris data architectures
Jul 12ArchitectureData EngineeringData PipelineDatabasedoris-best-practices
optimize Apache Doris table design and clusters
Jul 12DatabaseEngineeringPerformancedoris-debug
diagnose Apache Doris production issues
Jul 25DebuggingMonitoringOperationsdoris-debug-cloud
debug Apache Doris cloud mode issues
Jul 25CloudDebuggingPerformancedoris-debug-data-lake
debug Apache Doris data lake connectivity
Jul 25Data EngineeringDatabaseDebuggingdoris-debug-deployment
troubleshoot Apache Doris deployment failures
Jul 25DebuggingDeploymentOperations
More from Apache Software Foundation
View publisherdatafusion-python
write Apache DataFusion Python code
datafusion-python
Jul 12Data AnalysisPythonSQLbydbql
generate and execute BanyanDB BydbQL queries
skywalking-banyandb
Jul 12AnalyticsDatabaseSQLcompiling
compile and build BanyanDB projects
skywalking-banyandb
Jul 12BuildEngineeringgh-pull-request
create GitHub pull requests for BanyanDB
skywalking-banyandb
Jul 12GitHubPull Requestsvendor-update
update Go and Node.js vendor dependencies
skywalking-banyandb
Jul 12GoNode.jscayenne-cgen
generate Cayenne entity Java classes
cayenne
Jul 12Data ModelingJavaORM