Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Erlang 如何有效地删除大量mnesia表_Erlang_Mnesia - Fatal编程技术网

Erlang 如何有效地删除大量mnesia表

Erlang 如何有效地删除大量mnesia表,erlang,mnesia,Erlang,Mnesia,当我需要删除节点上的许多mnesia表(大约20000个)时,我遇到了一种情况。由于这些表有一个名称模式,我可以通过以下方式收集和删除它们: Tables = [Table || Table <- mnesia:system_info(tables), re:run(atom_to_list(Table), "<pattern>") /= nomatch], lists:foreach( fun (Table) -> mnesia:delete_t

当我需要删除节点上的许多mnesia表(大约20000个)时,我遇到了一种情况。由于这些表有一个名称模式,我可以通过以下方式收集和删除它们:

Tables = [Table || Table <- mnesia:system_info(tables), re:run(atom_to_list(Table), "<pattern>") /= nomatch],
lists:foreach(
    fun (Table) ->
        mnesia:delete_table(Table)
    end,
    Tables).
Tables=[Table | | Table
mnesia:删除_表(表)
完,,
表)。
但是,逐个删除它们非常慢,删除20k个表需要很长时间。
有没有更有效的方法呢?

您可以生成进程

lists:foreach(
    fun (Table) ->
        spawn(mnesia, delete_table, [Table])
    end,
    Tables).

它只扩展了上述解决方案,但没有提供任何改进。