Muchísimas gracias por las aclaraciones Álvaro!

Un crack, como siempre!

On 7/11/19 09:45, Alvaro Herrera wrote:
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.

Reply via email to