Re: Adicionando data con COPY

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Diego <mrstephenamell(at)gmail(dot)com>
Cc: "Carlos T(dot) Groero Carmona" <ctonetg(at)gmail(dot)com>, Lista PostgreSql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Adicionando data con COPY
Date: 2019-11-07 12:45:34
Message-ID: 20191107124534.GA12558@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Diego escribió:

> Me agarra la duda en la parte de "Pero la pregunta surge porque cuando
> insertamos normalmente, no se bloquea la tabla ni los indices que serian
> modificados."
>
> Si una tabla tiene pk, y los datos a insertar caen, digamos, al final de la
> pk, ocurre como decis... pero si caen el medio de la tabla...¿que pasa?
>
> Realmente, tendria que hacer la prueba y ver, porque no se.

No pasa nada ... los índices btree en Postgres (los únicos que
implementan PKs) funcionan concurrentemente todo el tiempo,
independiente de dónde hagas las inserciones. Hay un montón de teoría
detrás de esto y que funcione eficientemente ... si el tema realmente te
interesa, busca el paper de Lehman y Yao de 1981 "Efficient Locking for
Concurrent Operations on B-Trees", que es la base de la implementación
de Postgres (aunque la nuestra tiene un montón de mejoras a ese diseño)
https://www.csd.uoc.gr/~hy460/pdf/p650-lehman.pdf

> Lo que si se me ocurre, es que  todo esto seria fuera de una transaccion, ya
> que de esar en medio de una, si tendrias bloqueos hacia las demas consultas
> que esten usando la tabla de destino.

No, eso tampoco.

--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Diego 2019-11-07 14:38:56 Re: Adicionando data con COPY
Previous Message Diego 2019-11-07 12:33:45 Re: Adicionando data con COPY