【问题标题】:howto start table in mnesia?如何在 mnesia 中启动表?
【发布时间】:2011-05-24 04:03:55
【问题描述】:

我的情况是,其中一张表的大小为 2G,之后我无法使用此表,

'mynode@localhost' 5> mnesia:dirty_first(my_table). ** 退出:{aborted,{badarg,[my_table]}} **

我知道我需要应用碎片,但如何在运行时执行? 主要问题是 - 如何启动 my_table 以在运行时减小其大小? (我的意思是没有重启mnesia)

【问题讨论】:

  • 我别无选择。我将文件从 2000M 剪切到 1999M 并修复表

标签: erlang mnesia


【解决方案1】:

你在 mnesia 中存储了什么样的数据?据我了解,您正在尝试遍历您的表格,是吗? 如果您可以决定将存储在数据库中的最大数据量,那么您可以在创建表时预先确定所需的片段数。

如果您需要重新配置已经碎片化的数据库,请检查以下链接是否对您有帮助:: http://www.erlang.org/doc/apps/mnesia/Mnesia_chap5.html

【讨论】:

  • 是的,我尝试遍历表中的所有记录,此时它根本没有碎片。我可以用数据对表进行分段吗?或者我需要重新创建具有新属性的表?
  • 您可以在创建表时使用“frag_properties”创建一个分片表。我想您知道如何从碎片化数据库中访问数据。 Mnesia 维护一个散列来查找数据所在的片段。我认为您可以使用 mnesia:change_table_frag(my_table,{attr,Val}) 添加其他片段。请检查我给你的链接
猜你喜欢
  • 2020-12-25
  • 2012-03-22
  • 2011-09-28
  • 2019-04-10
  • 1970-01-01
  • 2012-12-14
  • 2015-04-14
  • 2010-11-14
  • 1970-01-01
相关资源
最近更新 更多