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

From: Carlos Enrique Perez <carlos(dot)perez(at)syswarp(dot)com(dot)ar>
To: "Ivan Perales M(dot)" <ivan(dot)perales(at)gmail(dot)com>
Cc: Ayuda Esp PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Separación lógica de tablas, agrega rendimiento?
Date: 2016-04-19 20:21:09
Message-ID: 1461097269.2879.23.camel@nb-cperez
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Te recomiendo olvidarte de todo lo que escribiste y empezar a mirar como
hacer explain plan.
Asegurate que las consultas que haces en ningun caso tengan full scan
( por ahi lei que tenes que crear indices.... lo cual es correcto)
Tambien fijate dentro de dicho explain las cardinalidades de los indices
(ej. un indice por sexo donde es un varchar(1) y solo tenes H/M no
tiene mucho sentido y si lo usa te estropea la performance de la
consulta.
Otro tema es lo que tarda la consulta en si y despues por otro lado lo
que tarde en devolverte los datos. Lo cual hace que por ahi en un gran
volumen de datos (ej. que tengas un aplicativo Web) te convenga paginas
usando offset, etc.

Si incurris en hacer lo que decis debajo, siempre te van a quedar
consultas que pesan... o sea la de los clientes grandes como bien
decis).
Espero que esta info te sirva. Tene en cuenta que el pgadmin tiene una
herramienta grafica de explain plan.
Saludos

El mar, 19-04-2016 a las 14:07 -0500, Ivan Perales M. escribió:
> 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.
>
>
> 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.
>
>
>
> 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?
>
>
> Saludos y gracias por su tiempo.
>
>
> --
>
> Lindolfo Iván Perales Mancinas
> Solo existen 10 tipos de personas en el mundo, las que saben binario y
> las que no.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2016-04-19 20:21:44 Re: Separación lógica de tablas, agrega rendimiento?
Previous Message Ivan Perales M. 2016-04-19 20:00:20 Re: [pgsql-es-ayuda] Separación lógica de tablas, agrega rendimiento?