Gracias a todos por sus respuestas, en realidad puede que me haya adelantado a 
un problema pero lo cierto es que la tabla puede tener millones de registros y 
consultarla no debe demorar más de 200 milisegundos, estoy hablando de una 
tabla por precios diarios para tipos de habitación de un hotel por versión de 
tarifario existente, o sea que hay un registro diario por cada tipo habitación, 
versión de tarifario y la búsqueda utiliza los tres criterios de búsqueda 
(fecha, versión de tarifa, tipo de habitación)

Una vez que los datos se insertan, se actualizan muy poco y se puede consultar 
más o menos un millón de veces al día (aunque puede aumentar).

Hice una prueba con Pg10 y particionado declarativo, particionado la tabla 
trimestralmente por fecha y creando un índice único en cada partición 
utilizando los tres criterios. Los resultados obtenidos en una máquina que no 
tiene buenas prestaciones fueron bastante buenos, por lo que espero que en un 
server dedicado y con muchas mejores prestaciones sea aún mejor.

También quiero probar con particionado por herencia porque el declarativo no 
permite crear llaves primarias en la tabla particionada y puede que esta tabla 
sea referenciada desde otra tabla para temas de auditoría.

Gracias a todos por sus consejos. Saludos.

-----Mensaje original-----
De: Jaime Casanova [mailto:jaime.casan...@2ndquadrant.com] 
Enviado el: lunes, 5 de febrero de 2018 07:15 p. m.
Para: Lazaro Garcia
CC: pgsql-es-ayuda
Asunto: Re: Consulta de tabla con millones de registros

2018-01-29 15:17 GMT-05:00 Lazaro Garcia <lazaro3...@gmail.com>:
>
> Recientemente estoy trabajando en un sistema donde se tendrá una tabla 
> que puede contener millones de tuplas, por encima de los 50 millones y 
> el propósito de la tabla será almacenar precios de un producto por día 
> para cada uno de los clientes existentes. Sobre la tabla se ejecutarán 
> más lecturas que escrituras y las lecturas deben ser bien rápidas.
>

y cual es el problema? o te estás adelantando a la posibilidad de problemas? 
porque si es así recuerda que "la optimización adelantada es la raíz de todos 
los males" (cita de Donald Knuth)

la realidad es que podrías tener problemas, o no... he visto, en el mismo 
sistema, una tabla de más de 700millones de registros que no se ha particionado 
y una tabla de 130millones que tuvo que ser particionada para que el sistema 
funcione.

La pregunta es: como será el uso de la tabla? dices que habrán más escrituras 
que lecturas, eso es lo más común ahora puedes decir cuantas veces se 
actualizará el mismo registro? en que periodo de tiempo? como serán las 
consultas (sobre el PK, se leerá en rangos, rangos grandes o pequeños)? y los 
updates?

-- 
Jaime Casanova                      www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


Reply via email to