Re: Tablas no modificables

From: Álvaro Hernández Tortosa <aht(at)Nosys(dot)es>
To: Eduardo Morras <nec556(at)retena(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Tablas no modificables
Date: 2011-05-31 00:23:55
Message-ID: 20110531002355.GE7800@nosys.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Mon, May 30, 2011 at 07:28:38PM +0200, Eduardo Morras escribió:

>
>Muy buenas a todos.
>
>Actualmente tengo una tabla con muchos registros y quiero
>particionarla, una parte con datos de meses anteriores que no van a
>cambiar, y otra con el mes actual. Se como hacer la particion y las
>consultas posteriores, pero mis dudas son:
>

Hola, Eduardo.

Ya te han contestado directamente a tus cuestiones, por lo que
sólo intento aportar mi granito de arena en términos generales.

MVCC es la técnica que usa PostgreSQL para el control de
concurrencia (como su nombre indica). Es, por lo tanto, un mecanismo que
no entiendo en qué puede afectar al rendimiento, cuando además no hablas
de concurrencia.

Como bien apunta Jaime, no vas a tener bloqueos si no pides
locks exclusivos (modificar, borrar la tabla, etc), por lo que vas a
poder tener múltiples consultas simultáneas sobre la tabla sin que se
molesten. Entonces ¿qué te aportaría -suponiendo que se pudiera-
"eliminar" MVCC?

En mi opinión, parece una confusión de términos. Podría pensarse
que porque MVCC es el "árbitro" de la concurrencia, ralentiza. Pero en
absoluto; al contrario, es muy eficiente gracias al uso de "MV" :)

Si tienes problemas de rendimiento con consultas grandes,
complejas y que afectan a muchos datos, no busques ayuda en
"potenciales culpables" como MVCC, sino busca soluciones conocidas y
claras. Sin conocer tu caso, se me ocurren varias:

- Dado que tus datos son WORM (Write Once, Read Many) replícalos a otras
bbdd. externas en "sólo lectura". Ahí sí que puedes usar muchas
optimizaciones.

- Revisa work_mem (que no sea muy pequeño), que puede afectar mucho a
tus consultas

- Revisa uso de índices (dependiendo la consulta, se usarán o no)

- Si tienes RAM, verifica que se usa adecuadamente (shared_buffers),
para que pueda cachear aunque sea un subconjunto de los datos y los
índices (si no se escriben, la caché de dichos datos se gestionará
fantásticamente).

Saludos,

Álvaro

--

Álvaro Hernández Tortosa

-----------
NOSYS
Networked Open SYStems

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2011-05-31 03:50:38 Re: Tablas no modificables
Previous Message Anthony Rafael Sotolongo Leon 2011-05-30 23:07:11 Re: Permisos por columna