recuperar espacio de tabla Toast sin bloqueo

From: Hellmuth Vargas <hivs77(at)gmail(dot)com>
To: Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: recuperar espacio de tabla Toast sin bloqueo
Date: 2019-07-29 16:26:35
Message-ID: CAN3Qy4piGVd-raULJ3PE7N+Y0fd+aVNW4MrfP8Kp=89PyHd_HA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Lista

Tengo la siguiente tabla:

prod=# \dS+ cuenta
Table "cuenta "
Column | Type |
Modifiers | Storage | Stats target | Description
-------------------------------------------+-----------------------------+-----------+----------+--------------+-------------
id | bigint
| not null | plain | |
transaccion_id | character varying(64) |
| extended | |
cliente_id | bigint |
not null | plain | |
codigo_comercio | character varying(32) |
| extended | |
xml_arbol_similares | text |
| extended | |
fecha_creacion | timestamp without time zone |
not null | plain | |
Indexes:
" cuenta _pkey" btree (id)
Has OIDs: no

la columna xml_arbol_similares guarda unos XML grandes, por lo tanto, esta
tabla tiene una tabla TOAST asociada:

relation | size
---------------------------------------------------+---------
cuenta | 253 GB
pg_toast.pg_toast_4367649 | 245 GB

select 4367649 ::regclass;
regclass
------------------------
cuenta
(1 row)

tamaño de los registros de la tabla EXCEPTO: xml_arbol_similares

prod=# SELECT pg_size_pretty(SUM(tamanos))
prod -# FROM (
prod (# SELECT pg_column_size(row(b.*)) as tamanos
prod (# FROM (select id, transaccion_id, cliente_id, codigo_comercio,
fecha_creacion
prod (# from cuenta) as b
prod (# ) AS c;
pg_size_pretty
----------------
4146 MB
(1 row)

tamaño de los datos de la columna xml_arbol_similares :

prod =# SELECT pg_size_pretty(SUM(tamanos))
prod -# FROM (
prod (# SELECT pg_column_size(row(b.*)) as tamanos
prod (# FROM (select xml_arbol_similares
prod (# from cuenta) as b
prod (# ) AS c;
pg_size_pretty
----------------
263 GB
(1 row)

Para recuperar espacio, se piensa eliminar la información dela columna
xml_arbol_similares del 2019 hacia atras;

update cuenta set xml_arbol_similares=null where fecha_creacion <
cast('2019-01-01' as timestamp)

pero tendría que ejecutar un VACUUM FULL sobre cuenta para recuperar este
espacio, la pregunta es? como los datos a eliminar (de la columna
xml_arbol_similares) se encuentran en la tabla TOAST es posible VACUUM
FUL sobre la TOAST SIN BLOQUEO de la principal? o que procedimiento se
puede seguir SIN QUE bloquee la operación de la tabla cuenta?

La versión de motor es pg 9.3 (si, esta sin soporte :-S ..por eso
necesitamos reducir el tamaño de esta tabla para su migración)

Muchas Gracias Lista y quedo atento

--
Cordialmente,

Ing. Hellmuth I. Vargas S.

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message mauricio pullabuestan 2019-07-29 16:45:28 Migrar de PG 9.6.13 64 bits a PostgreSQL 11.4
Previous Message Alberto Cardenas Cardenas 2019-07-25 15:13:13 Re: Crecimiento de archivos wal