Saludos lista

Hay un reto para crear un algoritmo en java para para recuperar valores de
medición de temperatura de un archivo de texto y calcular la temperatura
mínima, media y máxima por estación meteorológica
https://www.morling.dev/blog/one-billion-row-challenge/

Pero se están haciendo implementaciones en otros lenguajes y por supuesto
en bases de datos por ejemplo https://ftisiot.net/posts/1brows/ y
https://rmoff.net/2024/01/03/1%EF%B8%8F%E2%83%A3%EF%B8%8F-1brc-in-sql-with-duckdb/

Ya inserté los mil millones de registros en mi máquina y al realizar la
consulta
[image: image.png]
Tarda casi 2 minutos, así que seguí investigando como mejorar el tiempo y
al encontrar estas otras pruebas
https://gist.github.com/FranckPachot/50a6a491b85b0ddb3da6399d54653085 me
llamó la atención ésta línea
select /*+ parallel(8) gather_plan_statistics*/

Revisando postgres tiene un parámetro para aumentar el número de workers en
paralelo si la consulta lo necesita max_parallel_workers_per_gather


[image: image.png]
Mejoró bastante, 40 segundos menos.

*¿Qué otras optimizaciones se podrían realizar en postgres para disminuir
el tiempo?*

Con  Apache Pinot tarda aprox 1.9s
https://hubertdulay.substack.com/p/1-billion-row-challenge-in-apache?r=46sqk&utm_campaign=post&utm_medium=web

Otro tardó 20 segundos
https://twitter.com/_TylerHillery/status/1742971310123487429


Por supuesto eso depende de las especificaciones del equipo pero es
interesante que compartan sus experiencias.

Las especificaciones de mi máquina son:
Ryzen 5 6 cores/12 Threads a 3.0ghz
Disco nvme KINGSTON
Ubuntu 22.04
Postgresql 14

Reply via email to