代码之家  ›  专栏  ›  技术社区  ›  max

如何保证记忆记忆记忆的快速启动时间

  •  5
  • max  · 技术社区  · 16 年前

    带mnesia/dets的Erlang因其在崩溃后启动速度慢而闻名。基本上与旧文件系统上的fsck相同。

    但我也经历了正常关机后的缓慢启动时间:在一台结实的机器上,250MB的磁盘数据大约需要8分钟。

    所以除了输入“q()”之外,我还必须在关机时做一些特殊的事情?有没有办法加快启动时间?

    4 回复  |  直到 15 年前
        1
  •  3
  •   max    16 年前

    到目前为止我发现的事情:

    • 只有磁盘的表似乎会导致 启动时间比磁盘表长得多
    • 打电话 mnesia:create_table() 使用新表类型不足以更改表类型。使用 mnesia:change_table_copy_type()
    • 似乎只有磁盘的表不会收缩,如果删除项目,加载也不会更快。

    我通过修复两个表上的表类型问题并将数据库大小缩小到4MB来解决我的问题。

        2
  •  1
  •   Tautologistics    16 年前

    在您的主管中,在所有写入记忆障碍的进程停止后,您应该调用:

    application:stop(mnesia)
    

    这将正确关闭该节点上的Mnesia。

        3
  •  1
  •   Ranok    16 年前

    q()应向mnesia应用程序发送停止信号,该信号与application:stop(mnesia)命令相同。我建议尝试使用mnesia:stop()命令将其很好地降下来。

        4
  •  1
  •   Jacob    15 年前

    来自蒙尼西亚文件:

    -mnesia no_table_loaders NUMBER 指定并行表的数目 启动时装载机。更多的装载机可以 如果网络延迟很高,请保持良好状态 或者如果许多表包含少数 记录。默认值为2。

    如果您有许多表,这将允许您并行加载它们。但它不能加快一张桌子的开始时间。为此,最好的方法是拥有小的表,您可以通过将它们分割来实现这一点。