apache / apache/arrow-flight-sql-postgresql
Improve `SELECT text` performance
- Vorherrschende Sprache
- C++
- Sterne
- 116
- Forks
- 10
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
It's slower than the PostgreSQL protocol.
The followings may be related but we need to look into it:
* Building `arrow::RecordBatch` is slow?
* We need to build `arrow::RecordBatch`es to use `arrow::ipc::RecordBatchWriter()`. We need to copy PostgreSQL data for it. (Not zero-copy.)
* Should we add an API that writes Apache Arrow streaming format data without building `arrow::RecordBatch` to Apache Arrow C++?
* Calling `SPI_getbinval()` is slow?
* It calls `nocachegetattr()` https://github.com/postgres/postgres/blob/3edc6580c0e27fb8f13322efd255a88d20dda6c2/src/backend/access/common/heaptuple.c#L496-L712 and it's not a short function. Can we shortcut some operations?
Beitragsleitfaden
Rechercherichtung
Beginnen Sie mit dem Profiling des SELECT-Textpfads und vergleichen Sie ihn mit dem PostgreSQL-Protokoll, wobei Sie sich auf die Konstruktion von Apache Arrow RecordBatch, RecordBatchWriter und PostgreSQLs SPI_getbinval() konzentrieren. Ermitteln Sie, ob das Kopieren in RecordBatch oder SPI_getbinval()/nocachegetattr() den größten Anteil ausmacht, und messen Sie anschließend die abgeschlossene Änderung anhand der Baseline des PostgreSQL-Protokolls.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- cpp, postgresql
- Bereich
- backend, databases, performance
- Issue-Typ
- Bug
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 25/100