как запустить таблицу в mnesia?

У меня ситуация когда одна из таблиц rich size 2G и после этого я не могу работать с этой таблицей,

'mynode@localhost' 5> mnesia:dirty_first(my_table). ** завершено: {прервано,{badarg,[my_table]}} **

Я понимаю, что мне нужно применить фрагментацию, но как это сделать во время выполнения? И главный вопрос - как запустить my_table, чтобы уменьшить его размер во время выполнения? (имею в виду без перезапуска мнезию)


person vinnitu    schedule 12.12.2010    source источник
comment
У меня нет выбора. Я разрезал файл с 2000M на 1999M и восстановил таблицу   -  person vinnitu    schedule 18.05.2011


Ответы (1)


Какие данные вы храните в mnesia? Насколько я понимаю, вы пытаетесь обойти свой стол, не так ли? Если вы можете решить, какой максимальный объем данных будет храниться в вашей базе данных, то вы можете заранее определить количество необходимых вам фрагментов при создании таблицы.

В противном случае, если вам нужно перенастроить уже фрагментированную базу данных, проверьте, поможет ли вам приведенная ниже ссылка: http://www.erlang.org/doc/apps/mnesia/Mnesia_chap5.html

person Arunmu    schedule 12.12.2010
comment
да, я пытаюсь просмотреть все записи в таблице, и на данный момент она вообще не фрагментирована. Могу ли я фрагментировать таблицу с данными? или мне нужно воссоздать таблицу с новыми атрибутами? - person vinnitu; 12.12.2010
comment
Вы наверняка можете создать фрагментированную таблицу, используя frag_properties при создании таблицы. Думаю, вы знаете, как осуществляется доступ к данным из фрагментированной базы данных. Mnesia поддерживает хеш, чтобы найти, в каком фрагменте лежат данные. Я думаю, вы можете добавить дополнительные фрагменты, используя mnesia:change_table_frag(my_table,{attr,Val}). Пожалуйста, проверьте ссылку, которую я дал вам - person Arunmu; 12.12.2010