Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Database query details p95 query scans the full trace window and times out

Aperta
#3,034 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
52/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
clickhouse, typescript

Direzione di ricerca

Leggi ServiceDashboardDbQuerySidePanel.tsx, serviceDashboard.ts e ServiceDashboardSlowestEventsTile.tsx per ricostruire come vengono creati il filtro degli statement e la query p95. Riproduci il timeout su una sorgente di trace ad alto volume di 24 ore e ispeziona la query generata con EXPLAIN indexes = 1. Il lavoro è completato quando il drawer dei dettagli del database rimane utilizzabile senza scansionare l'intera porzione di trace selezionata né richiedere un timeout più elevato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

external
Description

Opening a database statement in Services > Database loads the Slowest 5% of Queries tile by calculating p95 across the selected trace window. On a high-volume trace source with a 24-hour window, the generated query times out after 60 seconds.

This is reproducible with the default OpenTelemetry-style trace schema, where Duration is numeric and database statements are read from SpanAttributes.

Environment
  • HyperDX 2.35.0
  • Self-hosted ClickStack
  • Trace source using the standard Duration UInt64 and SpanAttributes Map(...) fields
Steps to reproduce
  1. Open Services > Database.
  2. Select a 24-hour time range on a high-volume trace source.
  3. Open one of the database statement rows.
  4. Observe the Slowest 5% of Queries tile in the detail drawer.
Generated query

Sanitized version of the query shown by HyperDX:

SELECT
  quantile(0.95)(
    toFloat64OrDefault(toString(Duration))
  ) AS p95_duration_ns,
  p95_duration_ns / 1e6 AS p95
FROM traces
WHERE
  Timestamp >= fromUnixTimestamp64Milli(...)
  AND Timestamp <= fromUnixTimestamp64Milli(...)
  AND coalesce(
    nullIf(SpanAttributes['db.query.text'], ''),
    nullIf(SpanAttributes['db.statement'], '')
  ) IN ('GET /resource/:id')

The request fails with:

Timeout exceeded: elapsed 60099 ms, maximum: 60000 ms:
While executing MergeTreeSelect(pool: ReadPool, algorithm: Thread).

EXPLAIN indexes = 1 shows timestamp and primary-key pruning, but the generated database-statement predicate does not select the available map-value skipping index. The query therefore evaluates the coalesced map lookup across the selected trace slice.

Duration is already UInt64, so converting it through String and then Float64 also appears unnecessary.

Relevant code

The behavior appears to come from these paths:

Expected behavior

The database query detail drawer should remain usable for common 24-hour ranges without requiring a higher timeout or a full scan of the selected trace slice.

Possible directions include preserving the native numeric type for Duration, allowing the database statement expression to point to an indexed or materialized column, or using a projection/aggregate path for the repeated percentile calculation.

Lingua principale
TypeScript
Stelle
9.9k
Fork
487
Merge medio
2g 15h
PR unite (30g)
125

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di hyperdxio/hyperdx

Tutte le issue di hyperdxio/hyperdx

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.