From: | Jairo Graterón <jgrateron(at)gmail(dot)com> |
---|---|
To: | Enrique Herrera Noya <enrique(dot)herreranoya(at)gmail(dot)com> |
Cc: | Lista PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Particionamiento |
Date: | 2023-09-26 20:34:26 |
Message-ID: | CALnU-rMP6vST0TudafWB-79hyxxU65Ex-U4asyhte7eJwXt0Fg@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola Enrique
la tabla tiene la siguiente definición
create table comprobante
(
id bigserial not null,
num_ruc varchar(11) not null,
num_comprobante bigint not null,
fecha date not null,
monto numeric(10,2),
estatus char(1) not null, -- 0 anulado, 1 activo
primary key(id),
unique (num_ruc, num_comprobante)
);
para buscar rápidamente un cliente tenemos el siguiente índice
create index idx_num_ruc on comprobante(num_ruc);
Cuando se establece la relación comercial el estado(GOB) nos envía el
histórico de los comprobantes del cliente para cuando se realicen
ciertas operaciones se pueda validar el estatus, la fecha y el monto.
Ciertamente para eliminar un cliente se puede usar *delete from comprobante
where num_ruc='999999' *pero mensualmente se asocian o se van entre 100 a
200 clientes y
el delete se vuelve lento para borrar millones de registros, es un
procedimiento que requiere autorización y registro de auditoría.
Se decidió no borrar ya que creaba mucho I/O en el disco que afecta el
desempeño del sistema, ahora esa tabla va por los 2mil millones y sigue
creciendo.
El mar, 26 sept 2023 a las 16:11, Enrique Herrera Noya (<
enrique(dot)herreranoya(at)gmail(dot)com>) escribió:
>
> veamos si te entiendo
> tienes por un lado *num_ruc *y por otro
> *num_comqrobante *
>
> y la clave primaria la creas concatenando *cla**pri = num_ruc.**num_comprobante
> *
>
> como el numero de comprobante siempre es mayor el mas reciente puedes
> determinar desde que año quieres borrar basándote en el correlativo
>
> ahora bien si quiere borrar todo lo relacionado a un cliente, bastaría
> usar una condición donde *cla**pri** sea menor a **num_ruc.**num_ultimocomprobante
> *y que ademas *num_ruc **= num_rucaborrar *, de esta forma usas la clave
> primaria lo que sera mas rápido que usar en la sentencia solo *num_ruc *que
> no es clave primaria
>
>
>
>
> El 26-09-23 a las 12:11, Jairo Graterón escribió:
>
> Saludos lista
>
> Tengo un requerimiento sobre liberar el espacio ocupado por registros de
> ventas de
> los clientes que ya no tienen relación comercial con nosotros.
>
> Actualmente la tabla *comprobantes *tiene 2mil millones de registros,
> debido a que
> tiene registros de históricos de ventas proporcionados por el estado para
> controlar
> la emisión única de comprobantes.
>
> Cada cliente tiene su identificador único *num_ruc* junto con el número
> de comprobante es la clave primaria.
>
> Hacer un *delete from comprobantes where num_ruc='xxx'* no es óptimo ya
> que es lento y el espacio no se recupera en el disco, usamos servicios en
> la nube y cobran por espacio ocupado.
>
> Así que me gustaría sus experiencias si han implementado particionamiento
> de tablas ya que veo que no es necesario hacer delete sino drop table.
>
> Haciendo cálculos tendríamos la tabla maestra y 8mil tablas relacionadas
> por cada cliente asociado.
>
>
> Enrique Herrera Noya
> --
> +56 992303151
> Red Hat Certified Engineer RHCE Nº100223072 (RH6.0)
> Red Hat Certified System Administrato RHCSA Nº100223072 (RH6.0)
> Red Hat Certified Technician (RHCT) Nº605010753835478 (RH5.0)
> Novell Certified Linux Professional CLP 10
> Red Hat Delivery Specialist -Container Platform Application Deployment I
> Red Hat Delivery Specialist - Container Platform Administration I
> RED HAT SPECIALIST
> How to Sell Red Hat OpenShift for Infrastructure
> How to Sell Red Hat OpenShift for Developers
> Red Hat Sales Engineer Specialist - Container Platform
> Red Hat Sales Engineer Specialist – Automation
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Horacio Miranda | 2023-09-26 21:16:08 | Re: Particionamiento |
Previous Message | Jairo Graterón | 2023-09-26 19:50:12 | Re: Particionamiento |