0.1 - Iterate over the whole table slowly. use timer:sleep(delay_for_every_read). That's what I would do, since it's probably the simplest solution. <br><br><br>Sergej<br><br><br><div class="gmail_quote">On Thu, Mar 6, 2008 at 12:38 PM, Gleb Peregud <<a href="mailto:gleber.p@gmail.com">gleber.p@gmail.com</a>> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hello.<br>
<br>
I would like to implement some algorithm of purging old data from<br>
mnesia table. Expiration date is written inside each record (could be<br>
0 for permanent data).<br>
<br>
I have few ideas how to implement it:<br>
0) Every few seconds iterate over whole table and purge old records.<br>
It is implemented in this way now and it eats about 35% of CPU on<br>
every purge cycle for about 10 000 entries.<br>
Will index on expiration field speed up selecting? Is it better to use<br>
qlc? Will it speed give speed up if i use mnesia:index_match_object()<br>
?<br>
<br>
1) Use erlang:send_after() to send messages to purge individual<br>
records (with special care to timeouts greater then max value of<br>
unsigned int). Will Erlang runtime handle efficiently potentially up<br>
to few millions of timers?<br>
<br>
2) Use some sort of queue to manage sorted list of records to be<br>
purged. Make special process which will receive information about new<br>
records, insert into this queue and sleep until first record is to be<br>
purged. Probably gb_trees will handle it. Are there better ADS for<br>
this task?<br>
<br>
I'll be greateful for any advices and responses :)<br>
<br>
Best Regards,<br>
<font color="#888888">--<br>
Gleb Peregud<br>
<a href="http://gleber.pl/" target="_blank">http://gleber.pl/</a><br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://www.erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://www.erlang.org/mailman/listinfo/erlang-questions</a><br>
</font></blockquote></div><br>