Alberto Cuevas escribió: > Exacto! lo que dice Alvaro es el problema que quiero evitar. > > Bueno he decidido tener el stock separado, vere como me va.
Hm, hasta donde veo, tener el stock separado no te va a resolver el problema. Si sólo quieres leer el stock actual, da lo mismo si hay un update o no lo hay en una tabla o en la misma tabla (MVCC significa que lectores no son bloqueados por escritores). Si quieres actualizar el stock (vender un producto) da lo mismo si están en la misma tabla o en otra tabla: se bloquearán igual (un update tendrá que esperar a que el otro haga commit/rollback en cualquiera de los dos casos) IMO si quieres resolver ese problema de forma concurrente el diseño que te sirve es el de una tabla con deltas, donde tienes una fila que indica el total y varias filas que indican cambios al total (agregar/quitar), y para saber el actual tienes que sumar todas esas fiilas. Así puedes agregar una nueva fila de "quitar" cuando vendes, y varios procesos pueden agregar esas filas concurrentemente (e insertas una fila "agregar" cuando te llega stock nuevo del proveedor). Cada una hora (o algo así) un proceso en background hace la suma total y borra todos los deltas, haciendo un update de la fila del total (para evitar proliferación de excesivas filas "delta"). Ahí no se bloquea nadie, aunque para saber "el stock actual" tienes que considerar aquellos procesos que estén en ejecución concurrentemente. -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda