-
Hello, I have been using Tempo for a few months now and I am having major performance issues when querying. Context
ObservationsHere are a few TraceQL queries and the time it takes
As you can see, it seems some tags are ultra-slow, while some are very fast. I wonder what is the logic behind this. Maybe some tags are indexed, and some are not? If so, could that be because of the many number of tag names I have? Thanks in advance for your help |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 4 replies
-
Hi @ogxd. To give a bit of context on how Tempo's read path works: Tempo doesn’t do indexing of attributes, but rather uses a columnar storage format to support the requirements you’re referencing regarding search. We use Apache Parquet. What this allows Tempo is to pull individual columns (mapped as different attributes) from storage when searching with TraceQL, reading a lot less data than with a more common row-wise model. So, for the query The problem you're experiencing comes from the static schema we work with in parquet. In this schema, intrinsic fields, such as span name, service name or span kind, and special attributes such as namespace, get dedicated columns, whereas all other attributes go into a generic key-value slice. That's why you see those speed differences when you search by attributes that have dedicated columns vs attributes that don't. Something that will improve this issue is they format that we're working on |
Beta Was this translation helpful? Give feedback.
-
We continue to make performance improvements in every release. What version of Tempo are you using? Some tunables that can help:
|
Beta Was this translation helpful? Give feedback.
-
@mapno Thanks for such a great reply ! I have a question. which tempo version do you expect |
Beta Was this translation helpful? Give feedback.
Hi @ogxd. To give a bit of context on how Tempo's read path works:
Tempo doesn’t do indexing of attributes, but rather uses a columnar storage format to support the requirements you’re referencing regarding search. We use Apache Parquet.
What this allows Tempo is to pull individual columns (mapped as different attributes) from storage when searching with TraceQL, reading a lot less data than with a more common row-wise model. So, for the query
{ resource.namespace = "prod" }
, Tempo will only pull a single columnresource.namespace
(roughly, it’s more complex than just that).The problem you're experiencing comes from the static schema we work with in parquet. In this schema, intrinsic fie…