Как эффективно удалить множество таблиц мнезии - PullRequest
1 голос
/ 07 мая 2020

Я столкнулся с ситуацией, когда мне нужно удалить много таблиц мнезии на узле (около 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).

Однако удаление их по одной происходит очень медленно, и удаление 20k таблиц занимает очень много времени. Есть ли способ сделать это более эффективно?

1 Ответ

0 голосов
/ 07 мая 2020

вы можете создавать процессы.

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