Mnesia transactions, locks, and table events

Hakan Mattsson hakan@REDACTED
Tue Aug 11 18:18:03 CEST 2009

On Sat, 8 Aug 2009, Deepak Nulu wrote:

> If a transaction updates 3 tables (using only record level locks and
> not table level locks), is it possible for another simultaneous
> transaction to update these same tables, especially if the two
> transactions never update the same table at the same time? Is it
> possible for another simultaneous transaction to update a 4th
> (different) table?

Yes. As long as your transactions does not have any conflicting locks
they can progress in parallel.
> If multiple records (in one or more tables) are updated in a
> transaction, table events are sent for each updated record. If there
> are multiple simultaneous transactions, can the table events for these
> transactions get mixed, or is it guaranteed that all events for a
> single transaction are sent before the events for another transaction
> are sent?

No, there are no such guarantee. Events from one transaction may be
interleaved with events from another transaction. But if you have two
transactions that are updating the same record, the events will be
serialized due to conflicting locks.

Håkan Mattsson (uabhams)
Erlang/OTP, Ericsson AB

More information about the erlang-questions mailing list