Metrics reference#

Metrics contains counters, gauges, and histogram snapshots. A counter is a non-negative integer, a gauge represents current state, and a histogram records a distribution of observed values. The scan and prefetch-reader metrics described below are returned as point-in-time snapshots. Modifying a returned snapshot does not modify the component that produced it.

Scan planning#

The names below are declared by ScanMetrics. last* counters are replaced after each successful CreatePlan() call. Histograms and the cache hit/miss counters accumulate for the lifetime of the scan. They are unrelated to SetReadSchema() and ReadAheadCache::Reset(). The first six names match Java ScanMetrics; the remaining names are C++-only.

Name

Type

Unit

Meaning

lastScanDuration

counter

milliseconds

Duration of the last successful plan

scanDuration

histogram

milliseconds

Distribution of successful plan durations

lastScannedSnapshotId

counter

snapshot ID

Snapshot used by the last plan, or 0

lastScannedManifests

counter

files

Manifest files selected by the last plan

lastScanSkippedTableFiles

counter

files

Table files skipped by the last plan

lastScanResultedTableFiles

counter

files

Table files returned by the last plan

lastManifestReadDuration

counter

milliseconds

Manifest-list and entry read time for the last plan

manifestReadDuration

histogram

milliseconds

Distribution of manifest read times

lastSnapshotCacheEnabled

counter

boolean

Whether snapshot manifest-entry cache was eligible

lastSnapshotCacheHit

counter

boolean

Whether the last eligible lookup hit

snapshotCacheHits

counter

lookups

Cumulative exact-snapshot cache hits

snapshotCacheMisses

counter

lookups

Cumulative eligible cache misses

lastSnapshotCacheLoadDuration

counter

milliseconds

Cache load time for the last plan

snapshotCacheLoadDuration

histogram

milliseconds

Distribution of cache load times

lastSnapshotCacheStoreDuration

counter

milliseconds

Cache store time for the last plan; 0 when not stored

snapshotCacheStoreDuration

histogram

milliseconds

Distribution of cache store times

lastLazyDecodeScannedRows

counter

manifest rows

Candidate manifest rows inspected by the last plan

lastLazyDecodeMaterializedRows

counter

manifest rows

Manifest rows retained after lazy filtering

Prefetch reader#

The names below are declared by PrefetchMetrics. Counters and histograms accumulate for the lifetime of the prefetch reader, including across SetReadSchema(). enabled and parallelism describe the most recently initialized schema. queue-depth is reset by SetReadSchema() and Close(); queue-depth.max remains the lifetime maximum. These metrics are C++-only and have no counterparts in Java Paimon.

Name

Type

Unit

Meaning

prefetch.enabled

gauge

boolean

Whether the most recently initialized schema selected prefetch

prefetch.parallelism

gauge

readers

Effective reader parallelism

prefetch.read-ranges.total

counter

ranges

Generated ranges before bitmap filtering

prefetch.read-ranges.after-bitmap

counter

ranges

Ranges retained after bitmap filtering

prefetch.seek.count

counter

operations

Underlying reader seek operations

prefetch.produced-batches

counter

batches

Data batches placed into prefetch queues

prefetch.consumed-batches

counter

batches

Data batches returned to the consumer

prefetch.discarded-batches

counter

batches

Data batches released without consumption, plus EOF entries released during cleanup

prefetch.errors

counter

errors

Errors recorded by the background prefetch loop

prefetch.adaptive-disabled-count

counter

decisions

Times adaptive strategy disabled prefetch

prefetch.queue-full-count

counter

events

Times production found a full queue

prefetch.queue-depth

gauge

queue entries

Current queued entries, including retained EOF markers

prefetch.queue-depth.max

gauge

queue entries

Maximum queued entries in the reader lifetime

prefetch.reader-read-latency-us

histogram

microseconds

Underlying reader batch latency

prefetch.consumer-wait-latency-us

histogram

microseconds

Consumer wait latency per returned batch or EOF

Prefetch I/O#

PrefetchIoMetrics describes only I/O that passes through the prefetch reader’s instrumented input streams. It is not a whole-query or whole-table I/O total. All counters accumulate for the reader lifetime and are retained across SetReadSchema() and cache reset. Latency uses relaxed atomic count and sum counters instead of per-I/O histograms to reduce hot-path cost. Collection is disabled by default; set prefetch.io-metrics.enabled to true in the read options to enable it. When disabled, these per-I/O metrics are absent and the input streams have no metrics instrumentation. io.async.pending is current state and returns to zero when all callbacks complete. These metrics are C++-only and have no counterparts in Java Paimon.

Name

Type

Unit

Meaning

io.read.requests

counter

requests

Synchronous read requests

io.read.requested-bytes

counter

bytes

Bytes requested by synchronous reads

io.read.physical-bytes

counter

bytes

Bytes returned by successful synchronous reads

io.read.failed

counter

requests

Failed synchronous reads

io.read.latency.count

counter

requests

Completed synchronous read latency samples

io.read.latency.sum-us

counter

microseconds

Sum of synchronous read latency

io.async.requests

counter

requests

Asynchronous read requests

io.async.requested-bytes

counter

bytes

Bytes requested by asynchronous reads

io.async.physical-bytes

counter

bytes

Bytes attributed to successful asynchronous reads

io.async.completed

counter

requests

Successful asynchronous reads

io.async.failed

counter

requests

Failed asynchronous reads

io.async.pending

gauge

requests

Asynchronous callbacks not yet completed

io.async.latency.count

counter

requests

Completed asynchronous callback latency samples

io.async.latency.sum-us

counter

microseconds

Sum of asynchronous callback latency