[Feature] Improve scan performance in hot read paths
Mantenedores costumam responder em até 1 dia
@gripleaf já está trabalhando nisso.
Desde 21/9/2026.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Funcionalidade
- Clareza
- Precisa de esclarecimento
- Status de atividade
- Ativa
- Stack de tecnologia
- cpp
- Domínio
- performance
Direção de pesquisa
Comece criando um perfil das chamadas de StructArray::fields() do manifest reader e das chamadas de ArrayBuilder::type() do Avro decoder em caminhos de varredura concorrentes. Identifique o tempo de vida apropriado do batch, reader ou builder para os metadados imutáveis do Arrow e, em seguida, verifique se os caches são invalidados quando a árvore de objetos correspondente do Arrow é substituída. Considera-se concluído quando a sobrecarga de sincronização de shared pointers e de contagem de referências é reduzida durante varreduras concorrentes.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Search before asking
- I searched in the issues and found nothing similar.
Motivation
Recent profiling of highly concurrent scans has revealed several performance bottlenecks caused by
repeated operations on Arrow-returned shared_ptr objects in hot read loops.
Two significant cases have been identified:
-
Manifest readers repeatedly call
StructArray::fields()while processing individual rows. This
copiesshared_ptr<Array>objects and, with GCC 8.3's libstdc++, can introduce substantial lock
contention through_Sp_locker,pthread_mutex_lock, and futex waits when multiple workers read
manifests concurrently. -
Avro decoding calls
ArrayBuilder::type()for every integer and timestamp value. Because this
method returnsstd::shared_ptr<DataType>by value, concurrent scans repeatedly modify reference
counts on shared Arrow primitive data types, causing cache-line contention. Profiling showed
ArrayBuilder::type()and shared-pointer release operations accounting for a large proportion of
samples after the manifest bottleneck was removed.
This issue tracks the broader effort to identify and eliminate similar shared-pointer operations
from scan hot paths. The goal is to cache immutable Arrow metadata at an appropriate batch, reader,
or builder lifetime, while ensuring caches are invalidated whenever the corresponding Arrow object
tree is replaced.
The expected outcome is lower synchronization and reference-counting overhead under concurrent
scans, allowing CPU time to return to actual decoding, memory copying, and buffer management.
Solution
No response
Anything else?
No response
Are you willing to submit a PR?
- I'm willing to submit a PR!
- Linguagem predominante
- C++
- Estrelas
- 65
- Forks
- 31
- Merge médio
- 1d 23h
- PRs com merge (30d)
- 64
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de apache/paimon-cpp
-
[Feature] Support writing MAP<K, BLOB> fieldsTalvez já em andamento @SteNicholas assumiu há 1 dia. Abertaenhancement
apache/paimon-cpp#415 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
apache/paimon-cpp#410 ·
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
apache/paimon-cpp#409 ·
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
apache/paimon-cpp#408 ·
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
apache/paimon-cpp#407 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de apache/paimon-cpp
Issues semelhantes
-
bug chart-audit
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 92/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
godotengine/godot#124120 ·
Mantenedores costumam responder em até 1 dia
-
Component: R Type: bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
apache/arrow#51695 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
HasBacktrace Priority-Critical
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
azerothcore/azerothcore-wotlk#27921 ·
Mantenedores costumam responder em até 1 dia
-
area/ysql kind/bug priority/medium
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
yugabyte/yugabyte-db#34584 ·
Mantenedores costumam responder em até 1 dia