[erlang-questions] Mnesia transactions and locking

Ulf Wiger (TN/EAB) <>
Tue Jun 12 15:01:21 CEST 2007


Table locks are used for searches (unless mnesia
can figure out that the key is bound in your 
select() or match_object() call, I believe). 
Record locks are used for individual reads and 
writes.

If you know that you'll make lots of writes to 
the same table from within a transaction, it 
may speed things up significantly if you first 
take a table lock, but mnesia doesn't support
any heuristics to figure that out automatically.

BR,
Ulf W

> -----Original Message-----
> From: Joel Reymont [mailto:] 
> Sent: den 12 juni 2007 14:22
> To: Ulf Wiger (TN/EAB)
> Cc: Erlang Questions
> Subject: Re: [erlang-questions] Mnesia transactions and locking
> 
> Uffe,
> 
> On Jun 12, 2007, at 12:48 PM, Ulf Wiger (TN/EAB) wrote:
> 
> > It acquires locks as it goes along, or when the user 
> specifically asks 
> > for a lock.
> 
> This is a fine description but how does Mnesia determine 
> whether to lock a table or a record?
> 
>  From my inspection of the sources it seems that a table lock 
> is used for writes and record locks are used for certain 
> types of reads.
> 
> Is this correct? Is a table lock always used for writing?
> 
> 	Thanks, Joel
> 
> --
> http://topdog.cc      - EasyLanguage to C# translator
> http://wagerlabs.com  - Blog
> 
> 
> 
> 
> 
> 



More information about the erlang-questions mailing list