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.

Reply via email to