mnesia/dets を使用した Erlang は、クラッシュ後の起動時間が遅いことで有名です。基本的に、古いファイルシステムの fsck と同じ問題です。
しかし、通常のシャットダウン後の起動時間も遅くなります。頑丈なマシンで 250 MB のディスク上のデータの場合、約 8 分です。
「q()」と入力する以外に、シャットダウン時に何か特別なことをしなければならないのでしょうか? 起動時間を短縮する方法はありますか?
これまでにわかったこと:
mnesia:create_table()
だけでは、テーブル タイプを変更するのに十分ではありません。使用するmnesia:change_table_copy_type()
2 つのテーブルのテーブル タイプの問題を修正し、データベース サイズを 4 MB に縮小することで問題を解決しました。
q()は、application:stop(mnesia)コマンドと同じ停止信号をmnesiaアプリケーションに送信する必要があります。mnesia:stop()コマンドを使用して適切に停止することをお勧めします。
スーパーバイザでは、mnesia に書き込むすべてのプロセスが停止した後、次を呼び出す必要があります。
application:stop(mnesia)
これにより、そのノードの mnesia が適切にシャットダウンされます。