cómo optimizar PostgreSQL con millones de registros y datos de series temporales?
#1
Llevo un par de meses trabajando en un proyecto personal donde estoy recopilando datos de sensores IoT y los estoy guardando directamente en PostgreSQL. Al principio todo iba bien, pero ahora que tengo millones de registros, las consultas se han vuelto dolorosamente lentas, incluso las más simples. He estado leyendo sobre índices y particionado, pero me da la sensación de que quizás mi modelo de datos no es el adecuado para este volumen de series temporales. No estoy seguro de si el problema es mi falta de experiencia o si realmente necesito replantear la arquitectura desde cero.
Responder
#2
Interesante caso cuando trabajas con series temporales de millones de registros el rendimiento suele mejorar si divides la data por rangos de tiempo y haces un indice que se use en las consultas mas habituales. Empieza por explicar el plan de tus consultas y mira si el motor esta haciendo scans completos o usando el indice. Si ves scans prueba particiones por intervalo de tiempo y un indice compuesto por sensor_id y ts y si aplica columnas parciales para las consultas que solo tocan ciertos sensores.
Responder
#3
Otra vez la eterna pelea con indices y particionado a veces el problema es el modelo de datos mas que la configuracion Las series temporales merecen estructuras que reflejen el patron de escritura y lectura si trabajas con tablas planas para cada sensor podrias estar perdiendo eficiencia ¿Has considerado replantear el esquema para que refleje la temporalidad y la cardinalidad de sensores?
Responder
#4
Una idea que suena atrevida pero podria abrir la puerta es mirar time bucketing para agrupar datos de cada sensor en franjas de tiempo y luego consultar esas cubetas no voy a entrar en detalles pero podria cambiar como se leen los datos.
Responder
#5
Se siente frustrante cuando una consulta simple se vuelve lenta con millones de filas a veces el cuello de botella esta en la escritura concurrente y en los bloqueos Valdría probar un buffer o staging para insertar y ver si las lecturas pueden evitar bloquearse En series temporales la forma en que agrupas y ordenas los datos importa.
Responder
#6
Desde la experiencia de quien lee y espera patrones a veces el problema es que la gente quiere una solucion unica En series temporales el lector valora la claridad de las consultas y un modelo que permita filtrar por tiempo sin tocar millones de filas valida con pruebas y documentacion.
Responder
#7
Qué consultas están tardando más y cuántos sensores están involucrados?
Responder


[-]
Respuesta rápida
Mensaje
Escribe tu respuesta a este mensaje aquí.

Verificación de la imagen
Escribe el texto que aparece en la imagen, en el campo que está abajo. Este proceso se usa para evitar mensajes automáticos.
Verificación de la imagen
(no distingue MAYÚSC/minúsc)

Salto de foro: