Processing Large Mnesia dbase

tty <>
Thu Dec 1 16:11:21 CET 2005


Hello,

mnesia:foldl did the trick. On my 9 million records dbase it went from 64 mins on 3 nodes to 5.3 mins on 1 node. On my 14 million records it went from 9 hours to 15 mins on 1 node.

Thinking about Mnesia as a traditional database and using read/dirty_read was my downfall. 

Thanks to all who answered my questions.

t

-------- Original Message --------
From: "Ulf Wiger (AL/EAB)" <>
To: <>
Cc: <>
Subject: RE: Processing Large Mnesia dbase
Date: Tue, 29 Nov 2005 18:00:39 +0100

> 
> You need to place the call to mnesia:foldl() from
> within a fun passed to either mnesia:activity() or
> mnesia:transaction(). If you use 
> mnesia:activity(Type, Fun), then Type can be either
> of the valid types (ets, async_dirty, ..., sync_transaction.)
> 
> Example:
> 
> mnesia:activity(
>    transaction,
>    fun() ->
>            mnesia:foldl(fun(X,Acc) -> [X|Acc] end, [], Tab)
>    end).     
>  
> 
> /Uffe
> 
> > -----Original Message-----
> > From:  
> > [mailto:] On Behalf Of 
> > 
> > Sent: den 29 november 2005 16:56
> > To: Bengt Kleberg (AL/EAB)
> > Cc: 
> > Subject: Re: Processing Large Mnesia dbase
> > 
> > Unfortunately I get a 
> > 
> >                ** exited: {aborted,no_transaction} **
> > 
> > when running mnesia:foldl.
> > 
> > I concur it would be great to hear folks with large mnesia 
> > experience on this matter.
> > 
> > Thanks
> > 
> > t
> >



More information about the erlang-questions mailing list