Re: Duda con Reindex !!!

Lists: pgsql-es-ayuda
From: Angelo Astorga <angeloastorga(at)gmail(dot)com>
To: lista postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Duda con Reindex !!!
Date: 2009-08-20 13:19:50
Message-ID: 5bf317e20908200619h3cad361fs6a411643e56ed479@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Hola lista, he estado leyendo acerca de los reindex en tablas y existen
diferentes versiones relacionadas con el uso de esta funcion que influyen
directamente en la optimizacion de la base de datos y como tal, tengo la
siguiente duda: Cuando es recomendable hacer reindex y con que periodicidad
?

Gracias...


From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Angelo Astorga <angeloastorga(at)gmail(dot)com>
Cc: lista postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Duda con Reindex !!!
Date: 2009-08-20 13:57:21
Message-ID: 20090820135721.GC6261@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Angelo Astorga escribió:
> Hola lista, he estado leyendo acerca de los reindex en tablas y existen
> diferentes versiones relacionadas con el uso de esta funcion que influyen
> directamente en la optimizacion de la base de datos y como tal, tengo la
> siguiente duda: Cuando es recomendable hacer reindex y con que periodicidad
> ?

Es muy relativo.

--
Alvaro Herrera http://www.amazon.com/gp/registry/5ZYLFMCVHXC
"Si un desconocido se acerca y te regala un CD de Ubuntu ...
Eso es ... Eau de Tux"


From: Angelo Astorga <angeloastorga(at)gmail(dot)com>
To: lista postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Duda con Reindex !!!
Date: 2009-08-20 16:18:51
Message-ID: 5bf317e20908200918l35b89307xaad0f9262880b154@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Me queda claro que es relativo, pero mi gran duda es:
Tengo 2 tablas que hacen mucho delete e insert diario y como tal, hago
reindex y optimizo plan de consulta cada dia, sera prudente hacer reindex
cada dia ?

El día 20/08/09, Angelo Astorga <angeloastorga(at)gmail(dot)com> escribió:
>
> Hola lista, he estado leyendo acerca de los reindex en tablas y existen
> diferentes versiones relacionadas con el uso de esta funcion que influyen
> directamente en la optimizacion de la base de datos y como tal, tengo la
> siguiente duda: Cuando es recomendable hacer reindex y con que periodicidad
> ?
>
> Gracias...
>
>
>
>


From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Angelo Astorga <angeloastorga(at)gmail(dot)com>
Cc: lista postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Duda con Reindex !!!
Date: 2009-08-20 16:30:13
Message-ID: 20090820163013.GH6261@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Angelo Astorga escribió:
> Me queda claro que es relativo, pero mi gran duda es:
> Tengo 2 tablas que hacen mucho delete e insert diario y como tal, hago
> reindex y optimizo plan de consulta cada dia, sera prudente hacer reindex
> cada dia ?

No, yo creo que no es necesario hacerlo todos los días. Hacer vacuum sí
es necesario, lo más frecuentemente posible de manera que el espacio
muerto se pueda reutilizar (también en los índices). Y el espacio que
se desperdicie (que probablemente no será mucho), lo recuperas con un
reindex una vez al mes o algo así.

Ahora, si la tabla es pequeña y el reindex demora poco, quizás ni valga
la pena preocuparse del asunto.

Si de vez en cuando borras la tabla completa, te conviene usar TRUNCATE.

--
Alvaro Herrera Valdivia, Chile ICBM: S 39º 48' 55.3", W 73º 15' 24.7"
"Once again, thank you and all of the developers for your hard work on
PostgreSQL. This is by far the most pleasant management experience of
any database I've worked on." (Dan Harris)
http://archives.postgresql.org/pgsql-performance/2006-04/msg00247.php


From: Emanuel Calvo Franco <postgres(dot)arg(at)gmail(dot)com>
To: Angelo Astorga <angeloastorga(at)gmail(dot)com>
Cc: lista postgres <pgsql-es-ayuda(at)postgresql(dot)org>, Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Subject: Re: Duda con Reindex !!!
Date: 2009-08-20 17:02:41
Message-ID: f205bb120908201002k52e1071q2c4c8b7ba38300c3@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

>> Me queda claro que es relativo, pero mi gran duda es:
>> Tengo 2 tablas que hacen mucho delete e insert diario y como tal, hago
>> reindex y optimizo plan de consulta cada dia, sera prudente hacer reindex
>> cada dia ?
>
> No, yo creo que no es necesario hacerlo todos los días.  Hacer vacuum sí
> es necesario, lo más frecuentemente posible de manera que el espacio
> muerto se pueda reutilizar (también en los índices).  Y el espacio que
> se desperdicie (que probablemente no será mucho), lo recuperas con un
> reindex una vez al mes o algo así.
>

Adicionando algo a esto, podés revisar el estado de tus esquemas
(campo n_dead_tuples,
de la vista pg_stat_all_tables) con una consulta algo así:

select schemaname , sum(seq_scan), sum(seq_tup_read),
sum(idx_scan) , sum(idx_tup_fetch), sum(n_tup_ins),
sum(n_tup_upd),sum(n_tup_del),sum(n_tup_hot_upd),
sum(n_live_tup), sum(n_dead_tup)
from pg_stat_all_tables
where schemaname !~ '^pg.*'
group by schemaname

Esta consulta te muestra, cuantas tuplas estan marcadas para borrar. Seria
interesante establecer un porcentaje mínimo entre tuplas vivas y marcadas para
borrar, que te indique (mas o menos) cuando realizar un vacuum.

Con respecto a los índices, si hacés uso intensivo de ellos, por lo
general (solo
como teniendo en cuenta) si la base no es monstruosa, lo hago luego del vacuum.
Esto no es del todo necesario, pero me asegura el buen estado de los índices.

--
Emanuel Calvo Franco
DBA at: www.siu.edu.ar
www.emanuelcalvofranco.com.ar


From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Emanuel Calvo Franco <postgres(dot)arg(at)gmail(dot)com>
Cc: Angelo Astorga <angeloastorga(at)gmail(dot)com>, lista postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Duda con Reindex !!!
Date: 2009-08-20 17:07:00
Message-ID: 20090820170700.GI6261@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Emanuel Calvo Franco escribió:

> Adicionando algo a esto, podés revisar el estado de tus esquemas
> (campo n_dead_tuples,
> de la vista pg_stat_all_tables) con una consulta algo así:
>
> select schemaname , sum(seq_scan), sum(seq_tup_read),
> sum(idx_scan) , sum(idx_tup_fetch), sum(n_tup_ins),
> sum(n_tup_upd),sum(n_tup_del),sum(n_tup_hot_upd),
> sum(n_live_tup), sum(n_dead_tup)
> from pg_stat_all_tables
> where schemaname !~ '^pg.*'
> group by schemaname
>
> Esta consulta te muestra, cuantas tuplas estan marcadas para borrar. Seria
> interesante establecer un porcentaje mínimo entre tuplas vivas y marcadas para
> borrar, que te indique (mas o menos) cuando realizar un vacuum.

... que es justamente lo que hace autovacuum.

(BTW la consulta esa es más exacta si la haces justo después de un ANALYZE).

> Con respecto a los índices, si hacés uso intensivo de ellos, por lo
> general (solo
> como teniendo en cuenta) si la base no es monstruosa, lo hago luego del vacuum.
> Esto no es del todo necesario, pero me asegura el buen estado de los índices.

¿Has demostrado que sirva para algo?

--
Alvaro Herrera Valdivia, Chile Geotag: -39,815 -73,257
"I can't go to a restaurant and order food because I keep looking at the
fonts on the menu. Five minutes later I realize that it's also talking
about food" (Donald Knuth)


From: Emanuel Calvo Franco <postgres(dot)arg(at)gmail(dot)com>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: Angelo Astorga <angeloastorga(at)gmail(dot)com>, lista postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Duda con Reindex !!!
Date: 2009-08-20 17:14:24
Message-ID: f205bb120908201014p14e8732dw9085959300eae13a@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

>>
>> Esta consulta te muestra, cuantas tuplas estan marcadas para borrar. Seria
>> interesante establecer un porcentaje mínimo entre tuplas vivas y marcadas para
>> borrar, que te indique (mas o menos) cuando realizar un vacuum.
>
> ... que es justamente lo que hace autovacuum.
>
> (BTW la consulta esa es más exacta si la haces justo después de un ANALYZE).
>
>> Con respecto a los índices, si hacés uso intensivo de ellos, por lo
>> general (solo
>> como teniendo en cuenta) si la base no es monstruosa, lo hago luego del vacuum.
>> Esto no es del todo necesario, pero me asegura el buen estado de los índices.
>
> ¿Has demostrado que sirva para algo?
>

No. Simplemente es de cabeza dura.

--
Emanuel Calvo Franco
DBA at: www.siu.edu.ar
www.emanuelcalvofranco.com.ar


From: Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>
To: Emanuel Calvo Franco <postgres(dot)arg(at)gmail(dot)com>
Cc: Angelo Astorga <angeloastorga(at)gmail(dot)com>, lista postgres <pgsql-es-ayuda(at)postgresql(dot)org>, Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Subject: Re: Duda con Reindex !!!
Date: 2009-08-20 17:18:38
Message-ID: 3073cc9b0908201018m74f1348amd66ec7f8d76ad337@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

2009/8/20 Emanuel Calvo Franco <postgres(dot)arg(at)gmail(dot)com>:
>
> Con respecto a los índices, si hacés uso intensivo de ellos, por lo
> general (solo
> como teniendo en cuenta) si la base no es monstruosa, lo hago luego del vacuum.
> Esto no es del todo necesario, pero me asegura el buen estado de los índices.
>

Como dijo Alvaro, lo que interesa es la frecuencia del VACUUM...
puedes usar esa consulta que mostraste para verificar si hay alguna
tabla que requiera VACUUM con mas frecuencia que otras y establecer un
cron que haga VACUUM sobre esa tabla segun la frecuencia que hayas
determinado (no se si moviendo los parametros del AUTOVACUUM para esa
tabla se pueda lograr ese efecto, me imagino que con
autovacuum_vacuum_threshold y autovacuum_vacuum_scale_factor)...

asegurate de tener bien seteado fsm_max_relations y fsm_max_pages,
sino vas a terminar con una base con harto espacio muerto (aka:
fragmentada) sin importar cuan seguido hagas vacuum

--
Atentamente,
Jaime Casanova
Soporte y capacitación de PostgreSQL
Asesoría y desarrollo de sistemas
Guayaquil - Ecuador
Cel. +59387171157


From: Edwin Quijada <listas_quijada(at)hotmail(dot)com>
To: <jcasanov(at)systemguards(dot)com(dot)ec>, <postgres(dot)arg(at)gmail(dot)com>
Cc: <angeloastorga(at)gmail(dot)com>, <pgsql-es-ayuda(at)postgresql(dot)org>, <alvherre(at)alvh(dot)no-ip(dot)org>
Subject: RE: Duda con Reindex !!!
Date: 2009-08-20 18:49:34
Message-ID: BLU137-W30AD32D7E188F77D927D21E3FD0@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

>
> Como dijo Alvaro, lo que interesa es la frecuencia del VACUUM...
> puedes usar esa consulta que mostraste para verificar si hay alguna
> tabla que requiera VACUUM con mas frecuencia que otras y establecer un
> cron que haga VACUUM sobre esa tabla segun la frecuencia que hayas
> determinado (no se si moviendo los parametros del AUTOVACUUM para esa
> tabla se pueda lograr ese efecto, me imagino que con
> autovacuum_vacuum_threshold y autovacuum_vacuum_scale_factor)...
>
> asegurate de tener bien seteado fsm_max_relations y fsm_max_pages,
> sino vas a terminar con una base con harto espacio muerto (aka:
> fragmentada) sin importar cuan seguido hagas vacuum


Y cuales serian esos valores optimos ?
Cual seria una guia para poner estos valores?

Tengo AutoVacuum activado y me gustaria saber como mejorar el performance

*-------------------------------------------------------*
*-Edwin Quijada
*-Developer DataBase
*-JQ Microsistemas
*-Soporte PostgreSQL
*-www.jqmicrosistemas.com
*-809-849-8087
*-------------------------------------------------------*

_________________________________________________________________


From: Emanuel Calvo Franco <postgres(dot)arg(at)gmail(dot)com>
To: juan <juanramirez(at)cajazacate(dot)com(dot)sv>
Cc: Lista Postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Duda con Reindex !!!
Date: 2009-08-29 22:19:24
Message-ID: f205bb120908291519t6fa14eacmfaea70d11a6fb89a@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

> Hola Emanuel, me intereso mucho este script, solo que quería me hicieras el
> favor de explicarme que dato trae cada columna? Y como podría implementar un
> indice para saber cuando necesito un un vacuum
>

En realidad para el estado de los indices tenes una herramienta que es
el pg_stattuple , que te da tambien el estado de los índices.

Esta sentencia SQL lo que te muestra es desde el catalogo el estado
de las tablas de tu esquema. La columna que suma las dead tuples
es la que indica la cantidad de tuplas muertas. Deberias
estimar un proporsional. Pero como aclaro Alvaro, esto es lo que hace el
autovacuum :)

--
Emanuel Calvo Franco
DBA at: www.siu.edu.ar
www.emanuelcalvofranco.com.ar