Skip site navigation (1) Skip section navigation (2)

Re: Tablas no modificables

From: Marcos Ortiz <mlortiz(at)uci(dot)cu>
To: Eduardo Morras <nec556(at)retena(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Tablas no modificables
Date: 2011-05-30 20:42:43
Message-ID: 4DE40143.8050709@uci.cu (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
On 05/30/2011 12:58 PM, Eduardo Morras wrote:
>
> 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:
>
> a) En las tablas viejas sin cambios, se sigue usando mvcc ?
El sistema MVCC de PostgreSQL está por algo: es el que garantiza la 
consistencia de los datos, y esto, creéme es sumamente importante, por 
lo que no hay forma de que puedas desabilitarlo o algo por el estilo.
> b) Al hacer consultas tipo OLAP con un monton de funciones agregadas, 
> es cierto que no se pueden usar los indices y hay que hacer un 
> table-scan completo para calcularlas?
No, si se pueden crear índices en la columa que usaste para particionar. 
Mira un pequeño ejemplo:
-- Crea la tabla maestra
CREATE TABLE shipment (
id SERIAL PRIMARY KEY,
address TEXT NOT NULL,
shipping_date TIMESTAMP NOT NULL);

-- Tablas hijas
CREATE TABLE shipment_part_2008 (
CHECK (shipping_date >= DATE '2008-01-01'
AND shipping_date < DATE '2009-01-01')
) INHERITS (shipment);

CREATE TABLE shipment_part_pre2008 (
CHECK (shipping_date < DATE '2008-01-01')
) INHERITS (shipment);

-- Crea los indices en la shipping_date para acelerar las búsquedas
CREATE INDEX shipping_date_2008 ON shipment_part_2008 (shipping_date);
CREATE INDEX shipping_date_pre2008 ON shipment_part_pre2008 (shipping_date);


> c) Existen tablas en postgres que no usen mvcc? Solo quiero escribir 
> datos en ellas o (o exclusivo) leer datos de ellas, por lo que no 
> seria necesario mvcc.
Como ya te dije, no existe algún parámetro (al menos que yo conozca) que 
te permita activar o desactivar MVCC, porque no sería para nada ni 
factible ni recomendable. En la nueva versión beta de 9.1, existe algo 
llamado "Unlogged Tables", que no son más que las tablas que no quieres 
que vayan al log de escritura adelantada(WAL) y pueden actuar como un 
tabla en memoria, pero esto no es aconsejable para tablas que 
constituyan una pieza clave de tu negocio.

> d) Es cierto que el principal problema del punto b) es precisamente mvcc?
> e) Serian mas rapidas o solo marginalmente mas rapidas?
La rapidez de las consultas depende de muchos factores, no sólo de MVCC:
- hardware disponible
- optimización del servidor
- funcionar usar
- formas de escritura de la consulta, etc

Creo que para las consultas de tipo OLAP, las funciones ventana y las 
funciones de recursividad son la clave.
>
> Para mi seria perfecto que existieran esas tablas, tampoco seria 
> necesario autovacuum ya que los datos son fijos aunque supongo que si 
> hara falta el analyze.
Autovacuum lo puedes desactivar cuando quieras. Para esto está 
autovacuum = on/off
>
> Espero que se entienda lo que necesito, convertir las tablas que se 
> que no se van a modificar en una tabla constante tipo 
> WriteOnce-ReadMany sin los costes de administracion interna de 
> postgres (ni bloqueos, ni locks, ni nada similar).
>
> Un saludo
>
>
> -
> Enviado a la lista de correo pgsql-es-ayuda 
> (pgsql-es-ayuda(at)postgresql(dot)org)
> Para cambiar tu suscripción:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda


-- 
Marcos Luis Ortiz Valmaseda
  Software Engineer (Distributed Systems)
  http://uncubanitolinuxero.blogspot.com

In response to

pgsql-es-ayuda by date

Next:From: Diego AyalaDate: 2011-05-30 21:02:24
Subject: error al tratar de instalar funciones de dblink
Previous:From: Alvaro HerreraDate: 2011-05-30 19:08:09
Subject: Re: Tablas no modificables

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group