blob: b10d8bd6c39f4cc2c3e491dbc8959c14474c4c4d [file]
---
{
"title": "Performance and Tuning",
"language": "en",
"description": "Apache Doris performance and tuning navigation: covers tuning methodology, query and ingestion performance, optimization technology principles, and benchmarks."
}
---
import GettingStartedCard from '@site/src/components/getting-started-card/getting-started-card';
The adaptive optimizer and Pipeline execution engine in Apache Doris let most workloads work out of the box, but production environments usually still require systematic performance tuning. Start by following the tuning methodology to locate bottlenecks, then optimize for specific scenarios on the query or ingestion side. When you encounter an execution plan that is hard to explain, consult the optimization technology principles to understand the mechanisms behind it.
## Tuning Methodology
<div className="cards-grid">
<GettingStartedCard
title="Performance Tuning Overview"
description="Learn the end-to-end tuning workflow, the diagnostic and analysis tools that Doris provides, and how to systematically locate performance issues."
link="performance-tuning-overview/tuning-overview"
/>
</div>
## Query Performance
<div className="cards-grid">
<GettingStartedCard
title="Schema and Index Optimization"
description="Set the upper bound of query performance through table model, partitioning and bucketing, key column design, and index choices (prefix index, BloomFilter, NGram, inverted)."
link="tuning/tuning-plan/schema-and-index-optimization"
/>
<GettingStartedCard
title="Materialized View"
description="Pre-compute results with synchronous or asynchronous materialized views, and let transparent rewriting accelerate existing SQL without modifications."
link="materialized-view/intro"
/>
<GettingStartedCard
title="Join Optimization"
description="Eliminate Shuffle with Colocation Join, and use Distribute and Leading Hint to manually adjust the Join plan when the optimizer's decision is suboptimal."
link="join-optimization-intro"
/>
<GettingStartedCard
title="Caching Acceleration"
description="Combine SQL Cache, Condition Cache, and external table file cache to reuse results, filter computations, and remote data across repeated queries."
link="caching-intro"
/>
<GettingStartedCard
title="Execution Tuning"
description="Based on runtime bottlenecks in the Profile, adjust parallelism, RuntimeFilter wait time, data skew, and CBO rules."
link="tuning/tuning-execution/intro"
/>
<GettingStartedCard
title="High Concurrency and Point Queries"
description="Use row store and short-circuit execution to support high-QPS primary key queries on Unique Key tables, and use dictionary tables instead of dimension table joins to accelerate KV queries."
link="high-concurrency-intro"
/>
<GettingStartedCard
title="Distinct Counts"
description="Use BITMAP for exact deduplication, or use HLL for approximate UV computation when 1%-2% error is acceptable, significantly reducing memory and storage overhead."
link="distinct-counts/intro"
/>
<GettingStartedCard
title="Query Profile"
description="Analyze the time distribution of operators such as Scan, Exchange, Join, and aggregation through the Profile to quickly locate the slowest stage of a query."
link="query-profile"
/>
</div>
## Ingestion Performance
<div className="cards-grid">
<GettingStartedCard
title="DML Tuning"
description="For the execution plans of INSERT, UPDATE, and DELETE, adjust write parallelism, batch size, and execution path to achieve stable ingestion performance."
link="tuning/tuning-plan/dml-tuning-plan"
/>
</div>
## Optimization Technology Principles
<div className="cards-grid">
<GettingStartedCard
title="Query Optimizer"
description="Introduces rule rewriting and the cost model of the Nereids optimizer, including rule-based equivalent transformations and cost-based Join Enumeration."
link="optimization-technology-principle/query-optimizer"
/>
<GettingStartedCard
title="Pipeline Execution Engine"
description="Introduces the Pipeline model, scheduling mechanism, and Morsel-Driven parallel execution, which form the foundation of the Doris execution layer."
link="optimization-technology-principle/pipeline-execution-engine"
/>
<GettingStartedCard
title="Runtime Filter"
description="Introduces the execution mechanism by which RuntimeFilter is generated on the Join build side and pushed down to the probe side to skip irrelevant data."
link="optimization-technology-principle/runtime-filter"
/>
<GettingStartedCard
title="TopN Optimization"
description="Introduces short-circuit execution and partial sorting optimization in ORDER BY ... LIMIT scenarios, which skip most data to quickly return the TopN."
link="optimization-technology-principle/topn-optimization"
/>
<GettingStartedCard
title="Statistics"
description="Introduces the collection and use of statistics such as tables, columns, and histograms, which are the foundation for the cost-based query optimizer to choose plans."
link="optimization-technology-principle/statistics"
/>
</div>
## Benchmarks
<div className="cards-grid">
<GettingStartedCard
title="Star Schema Benchmark (SSB)"
description="SSB test results of Doris on standard hardware, including reproducible environment configuration and tuning highlights."
link="../benchmark/ssb"
/>
<GettingStartedCard
title="TPC-H"
description="TPC-H test results of Doris, covering data ingestion, query latency, and comparison guidelines."
link="../benchmark/tpch"
/>
<GettingStartedCard
title="TPC-DS"
description="TPC-DS test results of Doris in more complex multi-table analytical scenarios."
link="../benchmark/tpcds"
/>
</div>