Erlang 如何有效地删除大量mnesia表
当我需要删除节点上的许多mnesia表(大约20000个)时,我遇到了一种情况。由于这些表有一个名称模式,我可以通过以下方式收集和删除它们: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
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).
它只扩展了上述解决方案,但没有提供任何改进。