Skip to content

Commit 16ad10c

Browse files
jstirnamanpeterbarnett03claudeCopilotCopilot
authored
Release influxdb v3.9.0 (#7045)
* feat(influxdb3): Bump version to 3.9.0 * docs(enterprise): rewrite performance upgrade preview documentation (#7035) * docs(enterprise): rewrite performance upgrade preview documentation Completely rewrites the InfluxDB 3 Enterprise performance upgrade preview docs to reflect the current state of the storage layer upgrades. Adds documentation for column families, auto-DVC, bulk export, Parquet upgrade path, and updates all configuration flags to match the current codebase. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs(enterprise): refine performance upgrade preview content - Change "Private preview beta" to "Performance preview beta" - Remove Auto-DVC section from main page - Replace "legacy Parquet engine" / "new engine" with "Parquet and .pt files" - Add Parquet auto-upgrade warning to enable section - Add "What is" and "Why" section structure Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Update content/influxdb3/enterprise/admin/pachatree/_index.md Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com> * Update content/influxdb3/enterprise/admin/pachatree/_index.md Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com> * Update content/influxdb3/enterprise/admin/pachatree/_index.md Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com> * Update content/influxdb3/enterprise/admin/pachatree/_index.md Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com> * Update content/influxdb3/enterprise/admin/pachatree/configure.md Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com> * fix(enterprise): singular dedicated compactor node Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Update content/influxdb3/enterprise/admin/pachatree/_index.md Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com> * docs(enterprise): move performance preview out of admin to /performance-preview/ Moves docs from /admin/pachatree/ to /performance-preview/ for a cleaner URL and proper sidebar placement as a top-level Enterprise section. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Apply suggestions from code review * fix(enterprise): address PR review feedback - Rename --enable-auto-dvc to --pt-enable-auto-dvc (canonical flag name) - Remove broken Auto-DVC anchor link from configure page - Align notification wording with "beta" (not "private preview") - Fix notification ID dot to dash (influxdb3-9-performance-preview) - Clarify column families syntax is for line protocol Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs(influxdb3): fix configuration defaults for performance preview Correct default values based on code audit: - Change --pt-max-columns from ~6.5M to 10,000,000 (10M) - Add Enterprise default value (3d) for --pt-file-cache-recency The --pt-max-columns default was incorrect (code defines Catalog::MAX_TOTAL_COLUMNS = 10_000_000). The --pt-file-cache-recency inherits from --parquet-mem-cache-query-path-duration, which defaults to 3d in Enterprise. Code audit findings from @peterbarnett03 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * docs(enterprise): add downgrade-to-parquet documentation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs(enterprise): add cross-references to performance preview (#7049) * docs(enterprise): add cross-references to performance preview overview Link key terms (Apache Parquet, series key, line protocol, Gen0, compaction levels) to their reference pages and glossary entries. Add WAL-to-Gen0 pipeline summary in the bounded compaction section. * docs(enterprise): clarify "Why these upgrades" intro wording Reorder to: existing storage layer → customer needs → upgrades extend it. Replace "default" with "existing" to avoid ambiguity and drop negative value judgment. * Update content/influxdb3/enterprise/performance-preview/_index.md --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * docs(enterprise): add --use-pacha-tree to influxdb3 serve CLI reference (#7046) Add CLI reference entries for the performance upgrade preview flag and grouped --pt-* tuning options, linking to the main preview page and configuration reference. * feat(enterprise): add v3.9.0 export and telemetry API endpoints (#7047) * feat(enterprise): add v3.9.0 export and telemetry API endpoints Add Export data (beta) tag and four export endpoints (databases, tables, windows, window_data) gated behind --use-pacha-tree. Add query_sql_telemetry endpoint. Update write_lp with column families docs and query endpoints with hybrid query mode note. Bump spec version to v3.9.0. * docs(api): simplify hybrid query mode wording Change 'merge results from both legacy Parquet and new .pt storage' to 'merge results from Parquet and .pt files' for clarity. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update static/openapi/influxdb3-enterprise-openapi.yaml * Update api-docs/influxdb3/enterprise/v3/influxdb3-enterprise-openapi.yaml --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * feat(influxdb3): add v3.9.0 release notes for Core and Enterprise (#7050) Core: DataFusion upgrade, Python runtime upgrade, product identity in HTTP responses, database lifecycle hardening. Enterprise: performance upgrade preview (beta) with --use-pacha-tree, bulk data export, automatic DVC, downgrade-to-parquet, --yes/-y for delete commands, 1MB default string field limit, compaction stability. --------- Co-authored-by: peterbarnett03 <peter.barnett03@gmail.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 5ab8234 commit 16ad10c

9 files changed

Lines changed: 1839 additions & 53 deletions

File tree

api-docs/influxdb3/enterprise/v3/influxdb3-enterprise-openapi.yaml

Lines changed: 297 additions & 25 deletions
Large diffs are not rendered by default.
Lines changed: 330 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,330 @@
1+
---
2+
title: Performance upgrade preview
3+
seotitle: Performance upgrade preview for InfluxDB 3 Enterprise
4+
description: >
5+
Preview performance upgrades in InfluxDB 3 Enterprise with improved
6+
single-series query performance, consistent resource usage, wide-and-sparse
7+
table support, column families, and bulk data export.
8+
menu:
9+
influxdb3_enterprise:
10+
name: Performance upgrade preview
11+
weight: 12
12+
influxdb3/enterprise/tags: [storage, performance, beta, preview]
13+
related:
14+
- /influxdb3/enterprise/get-started/setup/
15+
- /influxdb3/enterprise/performance-preview/configure/
16+
- /influxdb3/enterprise/performance-preview/monitor/
17+
- /influxdb3/enterprise/admin/performance-tuning/
18+
---
19+
20+
> [!Warning]
21+
> #### Performance preview beta
22+
> The performance upgrade preview is available to {{% product-name %}} Trial
23+
> and Commercial users as a beta. These features are subject to breaking changes
24+
> and **should not be used for production workloads**.
25+
>
26+
> To share feedback on this preview, see [Support and feedback options](#bug-reports-and-feedback).
27+
> Your feedback on stability
28+
> and performance at scale helps shape the future of InfluxDB 3.
29+
30+
## What is the performance upgrade preview?
31+
32+
{{% product-name %}} includes a preview of major upgrades to the
33+
storage layer that improve how data is written, stored, compressed, compacted,
34+
and queried.
35+
These upgrades touch every layer of the storage path--from a new on-disk file
36+
format to how fields are organized into column families and how compaction
37+
manages resources.
38+
39+
## Why these upgrades
40+
41+
The existing InfluxDB 3 storage layer uses [Apache Parquet](https://parquet.apache.org/)
42+
and is optimized for analytical workloads.
43+
Customers running high-cardinality, wide-schema, and query-intensive workloads
44+
need better single-series query performance, more predictable resource usage,
45+
and the schema flexibility that made InfluxDB v1 and v2 popular.
46+
These upgrades extend the storage layer to support those workloads while
47+
maintaining full compatibility with InfluxDB 3's data model and query languages.
48+
49+
Key improvements include:
50+
51+
- **Faster single-series queries** -- Single-digit millisecond response times
52+
for highly selective time-series queries.
53+
- **Consistent resource usage** -- Bounded CPU and memory during persistence
54+
and compaction, eliminating spikes during heavy ingestion or compaction bursts.
55+
- **Wide-and-sparse table support** -- Schemas with up to millions of columns
56+
and dynamic schema evolution without expensive rewrites.
57+
- **Column families** -- Group related fields for efficient compression and I/O,
58+
so queries only read the data they need.
59+
- **Bulk data export** -- Export compacted data as Parquet files for use with
60+
external tools.
61+
- **Automatic Parquet upgrade** -- Seamlessly migrate existing data with
62+
hybrid query mode during the transition.
63+
64+
## Enable the preview
65+
66+
Include the `--use-pacha-tree` flag in your
67+
[`influxdb3 serve` startup command](/influxdb3/enterprise/get-started/setup/):
68+
69+
```bash {{< code-callout "--use-pacha-tree" >}}
70+
influxdb3 serve \
71+
--node-id host01 \
72+
--cluster-id cluster01 \
73+
--object-store file \
74+
--data-dir ~/.influxdb3 \
75+
--use-pacha-tree
76+
```
77+
{{< /code-callout >}}
78+
79+
You can also enable the preview with an environment variable:
80+
81+
```bash
82+
export INFLUXDB3_ENTERPRISE_USE_PACHA_TREE=true
83+
influxdb3 serve ...
84+
```
85+
86+
The `--use-pacha-tree` flag exposes additional configuration options prefixed
87+
with `--pt-`.
88+
See [Configure the preview](/influxdb3/enterprise/performance-preview/configure/)
89+
for tuning options, or
90+
[Monitor the preview](/influxdb3/enterprise/performance-preview/monitor/)
91+
for system tables and telemetry.
92+
93+
> [!Warning]
94+
> #### Existing clusters with Parquet data
95+
>
96+
> On clusters with existing Parquet data, enabling `--use-pacha-tree`
97+
> **automatically converts Parquet files to `.pt` format** on startup, which
98+
> consumes additional CPU and memory while the migration runs.
99+
> Queries continue to work normally during this period.
100+
> See [Upgrade from Parquet](#upgrade-from-parquet) for details.
101+
>
102+
> For the beta, we recommend enabling the preview with a fresh cluster in a
103+
> staging or test environment first.
104+
105+
## What's changed
106+
107+
These upgrades touch every layer of the storage path -- from the on-disk file
108+
format to how data is compressed, organized, and compacted.
109+
110+
### New file format
111+
112+
Data is stored in a new columnar file format (`.pt` files) optimized for
113+
time-series workloads.
114+
All data within a file is sorted by column family key,
115+
[series key](/influxdb3/enterprise/reference/glossary/#series-key), and
116+
timestamp, which enables efficient compaction, querying, and filtering.
117+
118+
The format uses type-specific compression algorithms that adapt to data
119+
characteristics -- delta-delta RLE for timestamps, Gorilla encoding for floats,
120+
dictionary encoding for low-cardinality strings, and more -- typically
121+
achieving 5-20x compression ratios.
122+
123+
### Column families
124+
125+
Column families let you group related fields together so that queries only read
126+
the data they need.
127+
Fields in the same family are stored together on disk.
128+
For wide tables with hundreds of fields, this dramatically reduces I/O.
129+
130+
When writing [line protocol](/influxdb3/enterprise/reference/line-protocol/), use the `::` (double-colon) delimiter in field
131+
names to assign fields to a family.
132+
The portion before `::` is the family name; everything after is the field name.
133+
134+
```txt
135+
metrics,host=sA cpu::usage_user=55.2,cpu::usage_sys=12.1,cpu::usage_idle=32.7 1000000000
136+
metrics,host=sA mem::free=2048i,mem::used=6144i,mem::cached=1024i 1000000000
137+
metrics,host=sA disk::read_bytes=50000i,disk::write_bytes=32000i 1000000000
138+
```
139+
140+
This creates three column families:
141+
142+
| Family | Fields |
143+
|:-------|:-------|
144+
| `cpu` | `usage_user`, `usage_sys`, `usage_idle` |
145+
| `mem` | `free`, `used`, `cached` |
146+
| `disk` | `read_bytes`, `write_bytes` |
147+
148+
When a query references only `mem::free`, the storage layer reads only the
149+
`mem` family block and skips `cpu` and `disk` data entirely.
150+
151+
> [!Note]
152+
> Only the first `::` is significant.
153+
> A field name like `a::b::c` creates family `a` with field `b::c`.
154+
155+
Fields written without `::` are assigned to auto-generated families (named
156+
`__0`, `__1`, etc.), each holding up to 100 fields.
157+
Explicit family names are an excellent way to optimize performance with known
158+
workloads, but they're not required to achieve good results.
159+
160+
### Bounded compaction
161+
162+
Incoming writes are buffered in the WAL, flushed to snapshots, and then merged
163+
into [Gen0 files](/influxdb3/enterprise/performance-preview/configure/#gen0).
164+
The upgraded storage layer organizes compacted data into 24-hour UTC windows
165+
and progresses Gen0 files through four [compaction levels (L1 through L4)](/influxdb3/enterprise/performance-preview/configure/#l1-l4-level-tuning).
166+
Compaction runs continuously in the background with a byte-based memory budget
167+
(default: 50% of system RAM), so it never causes resource spikes.
168+
169+
Old files are cleaned up after a cooldown period, ensuring query replicas have
170+
time to see new checkpoints before old data is removed.
171+
Failures are automatically retried, and the system is designed to be
172+
self-healing for transient issues.
173+
174+
## Upgrade from Parquet
175+
176+
Existing clusters with Parquet data can upgrade with zero manual migration.
177+
The upgrade is fully automatic and occurs on initial startup.
178+
179+
When you restart a cluster with `--use-pacha-tree`, the system:
180+
181+
1. Detects existing Parquet data and enters hybrid mode.
182+
2. Clears the legacy WAL on ingest nodes and streams Parquet files through a
183+
conversion pipeline.
184+
3. Integrates converted files into the new storage format through compaction.
185+
4. Automatically transitions once all data is migrated.
186+
187+
During hybrid mode, queries merge results from both the legacy and upgraded
188+
storage layers.
189+
If there is a conflict (same series key and timestamp), the upgraded data takes
190+
precedence.
191+
192+
### Monitor upgrade progress
193+
194+
Use system tables to track upgrade status:
195+
196+
```sql
197+
-- Per-node upgrade status
198+
SELECT * FROM system.upgrade_parquet_node
199+
200+
-- Per-file migration progress
201+
SELECT * FROM system.upgrade_parquet
202+
```
203+
204+
### Configure upgrade behavior
205+
206+
| Option | Description | Default |
207+
|:-------|:------------|:--------|
208+
| `--pt-disable-hybrid-query` | Disable hybrid query mode. Queries return only data from the upgraded storage layer, even during migration. | `false` |
209+
| `--pt-upgrade-poll-interval` | Polling interval for upgrade status monitoring. | `5s` |
210+
211+
## Downgrade to Parquet
212+
213+
If you need to revert from the performance preview back to standard Parquet
214+
storage, use the `influxdb3 downgrade-to-parquet` command.
215+
This command updates the catalog and deletes all PachaTree-specific files from
216+
object storage.
217+
218+
> [!Note]
219+
> #### Downgrade impacts
220+
>
221+
> The downgrade deletes all `.pt` files, including data written
222+
> after the upgrade.
223+
> **Only data that existed before the upgrade (original Parquet files) is preserved.**
224+
> You can re-enable the preview later by restarting with `--use-pacha-tree`.
225+
226+
### Before you downgrade
227+
228+
1. **Stop all nodes** in the cluster before running the downgrade command.
229+
The command checks for running nodes and refuses to proceed if any are active.
230+
231+
```bash
232+
influxdb3 stop node --node-id <NODE_ID>
233+
```
234+
235+
2. **Verify table compatibility.**
236+
The downgrade validates that all tables can be represented in Parquet format.
237+
Tables that exceed the Parquet column limit or contain columns without legacy
238+
Parquet column IDs block the downgrade.
239+
240+
### Preview the downgrade
241+
242+
Use the `--dry-run` flag to list files that would be deleted without making
243+
any changes:
244+
245+
```bash
246+
influxdb3 downgrade-to-parquet \
247+
--cluster-id cluster01 \
248+
--object-store file \
249+
--data-dir ~/.influxdb3 \
250+
--dry-run
251+
```
252+
253+
### Run the downgrade
254+
255+
```bash
256+
influxdb3 downgrade-to-parquet \
257+
--cluster-id cluster01 \
258+
--object-store file \
259+
--data-dir ~/.influxdb3
260+
```
261+
262+
After the downgrade completes, restart nodes without the `--use-pacha-tree` flag
263+
to resume standard Parquet storage mode.
264+
265+
For all available options, see
266+
[Downgrade options](/influxdb3/enterprise/performance-preview/configure/#downgrade-options).
267+
268+
## Export to Parquet
269+
270+
You can export compacted data as Parquet files for use with external tools.
271+
272+
> [!Note]
273+
> Data must be compacted before it can be exported.
274+
> Uncompacted data is not available for export at this time.
275+
276+
### Export workflow
277+
278+
```bash
279+
# Step 1: List available databases
280+
influxdb3 export databases
281+
282+
# Step 2: List tables in a database
283+
influxdb3 export tables -d mydb
284+
285+
# Step 3: List compacted 24-hour windows for a table
286+
influxdb3 export windows -d mydb -t cpu
287+
288+
# Step 4: Export data as Parquet files
289+
influxdb3 export data -d mydb -t cpu -o ./export_output
290+
```
291+
292+
To export specific time windows only:
293+
294+
```bash
295+
influxdb3 export data -d mydb -t cpu -w 2026-01-15,2026-01-16 -o ./export_output
296+
```
297+
298+
## Who should try the preview
299+
300+
Consider enabling the preview in your staging or development environment if
301+
you have workloads with:
302+
303+
- High cardinality or wide tables
304+
- Frequent backfill across time ranges
305+
- Query-heavy access patterns requiring low latency
306+
- Sparse schemas with dynamic column creation
307+
- Resource constraints where bounded memory and CPU usage matter
308+
309+
> [!Important]
310+
> #### Important: New file format
311+
>
312+
> These upgrades use a new columnar file format (`.pt` files).
313+
> When you enable the preview, new data is written in the new format.
314+
> Hybrid query mode (enabled by default) allows querying across both legacy
315+
> Parquet data and new `.pt` data seamlessly.
316+
>
317+
> For the beta, we recommend starting with a fresh setup for
318+
> testing and evaluation rather than converting existing data.
319+
320+
## Bug reports and feedback
321+
322+
To share feedback on the performance upgrade preview:
323+
324+
- Contact [InfluxData support](https://support.influxdata.com)
325+
- Reach out to your InfluxData account team
326+
327+
Your feedback on stability and performance at scale helps shape the future of
328+
InfluxDB 3.
329+
330+
{{< children hlevel="h2" readmore=true hr=true >}}

0 commit comments

Comments
 (0)