[erlang-questions] clarify: mnesia slowdown with extra indexes ???

Zoltan Peter Toth zoltan.peter.toth@REDACTED
Mon Mar 2 14:02:03 CET 2009


(no change, just repost with correct tagging so that I'll get the tons 
of responses :)

Zoltan Peter Toth wrote:
> Hi,
>
> I made some test on mnesia object matching on non-key attributes.
>
> Got a table like this:
> mnesia:table_info(tgccDevIdToTerminationTable,size).
> 27000                             
> mnesia:table_info(tgccDevIdToTerminationTable,attribute.)                                                                  
>
> [deviceId,terminationId,sessionId,mgId,deviceChar, deviceBitMask,chId]
>
> No extra index exists.
> A match on the mgId attrib gives:
>
> element(1,timer:tc(mnesia,dirty_match_object,[tgccDevIdToTerminationTable, 
> {'_','_','_','_',200021,'_','_','_'}])).
> 5578
> 5612
> 5571
> 6064
> 5622
>
> Now I added an index on the mgId:
> mnesia:add_table_index(tgccDevIdToTerminationTable, 
> mgId).                                                       {atomic,ok}
>
> ...and the matches slowed down:
> 6542
> 6420
> 6302
> 6430
> 6519
>
> This is determinitstic. If I remove the extra index, it becomes faster 
> again.
> The same even if specifying the index explicitly with 
> dirty_index_match_object().
> This is a live system with all the mnesia nodes up. R12B on quad core.
>
> Any comment on this ? Or is a table with 27000 rows too little to take 
> advantage of the
> extra index ???
> Br,
>    TZP.
>
>




More information about the erlang-questions mailing list