[erlang-questions] Extremely poor Mnesia performance

Hynek Vychodil <>
Tue Sep 30 17:59:18 CEST 2008

Mnesia is application database but general RDBMS. Mnesia is not optimized
for works such as crunch thousands of rows and many joins for each.
Application database means for example you can combine many different
nontrivial tasks programed in application language (Erlang) in various ways
with ability recursive including it in transactions. Mnesia is barely fast
even you do complex tasks in reliable and maintainable fashion. You are able
write your code in natural application way but you are still fast enough.
You don't need make trade off readability and maintainability by performance
or reliability and you gain all of this in distribute environment,
partitioning, mirroring and so. If you start compare application using
mnesia for many complex but not data expensive tasks with requirement of
readability you found mnesia is light faster than classic RDBMS approach. If
you need simple fast data intensive crunch, use classic RDBMS. If you need
complex data non intensive and various tasks with distribution and
reliability, use mnesia. That's all. Your task is nothing more than just
relational data crunch. It is primitive from mnesia point of view and you
don't use killer features of it.

On Tue, Sep 30, 2008 at 4:58 PM, <> wrote:

> Hey all,
> I am doing some benchmarking with Mnesia at the moment and am pretty
> disappointed to say the least.
> I'm hoping I am doing something wrong.
> Running a 5 table join below: (two of the tables have ~50k rows the rest a
> couple of hundred)
> execute(qlc:q([I#i.user_id       ||   I <- mnesia:table(i),
>                                                C <- mnesia:table(c),
>                                                I#i.user_id =:= C#c.user_id,
>                                                I#i.group =:= "Group A",
>                                                P <- mnesia:table(p),
>                                                T <- mnesia:table(t),
>                                                S <- mnesia:table(s),
>                                                C#c.platform_id =:=
> P#p.platform_id,
>                                                C#c.trans_id =:=
> T#t.trans_id,
>                                                C#c.sales_id =:=
> S#s.sales_id
>                                                ])).
> On a normal RDBMS this query returns in < 1min. I am yet to get a result
> from Mnesia and its been running for 10 mins.
> Is there anyway I can see what's going wrong with this query under the
> hood?
> Thanks,
> Dan
> ***********************************************************************************
> The Royal Bank of Scotland plc. Registered in Scotland No 90312. Registered
> Office: 36 St Andrew Square, Edinburgh EH2 2YB.
> Authorised and regulated by the Financial Services Authority
> This e-mail message is confidential and for use by the
> addressee only. If the message is received by anyone other
> than the addressee, please return the message to the sender
> by replying to it and then delete the message from your
> computer. Internet e-mails are not necessarily secure. The
> Royal Bank of Scotland plc does not accept responsibility for
> changes made to this message after it was sent.
> Whilst all reasonable care has been taken to avoid the
> transmission of viruses, it is the responsibility of the recipient to
> ensure that the onward transmission, opening or use of this
> message and any attachments will not adversely affect its
> systems or data. No responsibility is accepted by The
> Royal Bank of Scotland plc in this regard and the recipient should carry
> out such virus and other checks as it considers appropriate.
> Visit our websites at:
> www.rbs.com
> www.rbs.com/gbm
> www.rbsgc.com
> ***********************************************************************************
> _______________________________________________
> erlang-questions mailing list
> http://www.erlang.org/mailman/listinfo/erlang-questions

--Hynek (Pichi) Vychodil
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20080930/d3b06b1c/attachment.htm>

More information about the erlang-questions mailing list