From: | Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec> |
---|---|
To: | Hellmuth Vargas <hivs77(at)gmail(dot)com> |
Cc: | Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Alter varchar column size recrea índice? |
Date: | 2022-02-08 16:09:22 |
Message-ID: | YgKVsl5Xisuk7dt1@ahch-to |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On Tue, Feb 08, 2022 at 05:06:24AM -0500, Hellmuth Vargas wrote:
> Hola lista
>
> Leyendo por ahí en el siguiente post
>
>
> https://www.linkedin.com/posts/somdyuti-paul-042aa27_rds-postgresql-aws-activity-6896664452180131840-QZGN
>
>
> Expone que cuando se altera el tamaño de una columna varchar INDEXADA
> internamente se recrear el índice asociado.... Ojo solo estamos cambiando
> el tamaño... Que opinan?
>
Mejor que una opinión... una prueba (en postgres 14)
"""
postgres=# create table prueba (v varchar(10));
CREATE TABLE
postgres=# create index on prueba (v);
CREATE INDEX
postgres=# select oid, relname, relfilenode from pg_class where relname like 'prueba%';
oid | relname | relfilenode
--------+--------------+-------------
102710 | prueba | 102710
102713 | prueba_v_idx | 102713
(2 filas)
postgres=# alter table prueba alter v type varchar(15);
ALTER TABLE
postgres=# select oid, relname, relfilenode from pg_class where relname like 'prueba%';
oid | relname | relfilenode
--------+--------------+-------------
102710 | prueba | 102710
102714 | prueba_v_idx | 102713
(2 filas)
"""
¿Cómo se que no se reindexó el índice?
Porque al reindexar (igual que al reescribir la tabla) el relfilenode
cambia.
"""
postgres=# reindex index prueba_v_idx ;
REINDEX
postgres=# select oid, relname, relfilenode from pg_class where relname like 'prueba%';
oid | relname | relfilenode
--------+--------------+-------------
102710 | prueba | 102710
102714 | prueba_v_idx | 102715
(2 filas)
"""
Ahora, este no siempre fue el caso. Hace eones atras cualquier ALTER
TABLE causaba que se reescribiera la tabla. Aunque nunca he sabido, y
con eso quiero decir que no creo que alguna vez fuera así, este caso
en particular tuviera el efecto de no reescribir la tabla pero si
reindexar el índice.
--
Jaime Casanova
Director de Servicios Profesionales
SystemGuards - Consultores de PostgreSQL
From | Date | Subject | |
---|---|---|---|
Next Message | Jaime Casanova | 2022-02-08 16:25:49 | Re: Réplica lenta después de purgado en master |
Previous Message | Ruben Fitó | 2022-02-08 11:51:57 | Re: Réplica lenta después de purgado en master |