Re: Separación lógica de tablas, agrega rendimiento?

From: Anthony Sotolongo <asotolongo(at)gmail(dot)com>
To: "Ivan Perales M(dot)" <ivan(dot)perales(at)gmail(dot)com>, Ayuda Esp PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Separación lógica de tablas, agrega rendimiento?
Date: 2016-04-19 19:40:09
Message-ID: 57168999.3010903@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Ivan, te comento entre lineas
On 19/04/16 16:07, Ivan Perales M. wrote:
> Que tal buenas tardes.
>
> Me gustaria su opinion sobre lo siguiente. Hace varios años que se
> hizo un sistema para logistica de material. Con el paso de los años,
> dos tablas principales crecieron al grado de tener millones de
> registros, una es la que representa cada caja de material y la otra es
> los movimientos de material.
>
> El sistema obviamente es para muchos clientes, por lo que cada tabla
> tiene registros de todos los clientes y una columna que los
> indentifica. Y como en todo negocio, hay clientes chicos y clientes
> grandes. Clientes que manejan tan poco volumen que sus movimientos
> llegan a varios miles y otros con varios cientos de miles.
>
> Cuando se hace una consulta para un cliente pequeño en esas tablas, el
> tiempo del query es mucho mayor a que si solo buscara en los registros
> propios del cliente y esto es obvio, es por que tambien busca entre
> los registros de los otros clientes.
Creo que lo primero es identificar en realidad donde está afectada tu
query en el rendimiento, que de seguro ya has hecho, una vez hecho
decides las estrategias de optimización.

> Buscando en internet como optimizar esto, encontre un blog que decia
> que para optimizar el rendimiento de tablas grandes se deberia
> utilizar la partición de tablas, que básicamente son muchas tablas
> hijas, donde un store procedure decide a que tabla hija enviar la
> información.
>
>
Es cierto este puede ser un buen método, y muy bueno si se elije
correctamente el criterio de particionado, pero también pudiera ser
ajustar algún valor de tu configuración de PostgreSQL, indices, vistas
materializadas, reescribir la consulta, actualizar las estadísticas,
vacuum, o la combinación de varios de ellos, o cualquier otro solución
que se te ocurra o exista. ¿tienes claro que particionar es tu única
solución?

> Mi pregunta es, si creo un schema para cada cliente teniendo las
> mismas tablas, entonces esta separación logica trabajaria igual que la
> particion de tablas no? la diferencia es que seria desde el software
> donde se indique a que schema guardar y no mediante un store
> procedure. Realizar esta separación realmente si trae ventajas en
> lugar de utilizar una sola tabla para todos los clientes?
Respecto a esta solución, casi siempre que hagas más pequeñas tus tablas
vas a mejorar el acceso a los registros, pero tendrías que ponerte de
acuerdo con los desarrolladores y hacer un ETL para repartir los datos
hacia todos los esquemas y ¿si son miles de clientes vas a tener miles
de esquemas?, ten cuidado pudiera ser un dolor de cabeza, e incluso solo
mejorar en los clientes que sean pocos y los demás? tal vez te convenga
hacer la combinación de varios factores y mejore para siempre, o por lo
menos por un bien tiempo

>
> Saludos y gracias por su tiempo.
>
Saludos

> --
> Lindolfo Iván Perales Mancinas
> Solo existen 10 tipos de personas en el mundo, las que saben binario y
> las que no.

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripcin:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Hellmuth Vargas 2016-04-19 19:41:08 Re: [pgsql-es-ayuda] Separación lógica de tablas, agrega rendimiento?
Previous Message Alvaro Herrera 2016-04-19 19:39:10 Re: Separación lógica de tablas, agrega rendimiento?