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 |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
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
From | Date | Subject | |
---|---|---|---|
Next Message | Diego Ayala | 2011-05-30 21:02:24 | error al tratar de instalar funciones de dblink |
Previous Message | Alvaro Herrera | 2011-05-30 19:08:09 | Re: Tablas no modificables |