У меня есть три (реализовано с помощью кортежей и списков) с несколькими тысячами записей, и я хотел бы поддерживать одновременное чтение. Объем памяти данных находится в диапазоне 10-20 МБ. Три строится один раз и только после этого читается.
Каков рекомендуемый способ поддержания состояния и предоставления клиентам одновременного доступа?
Вот что я пробовал:
1) Создан сервер gen_server с три в качестве состояния. Это работало нормально, но, очевидно, все вызовы были сериализованы.
2) Модифицировано (1), чтобы порождать новый процесс для каждого вызова, который принимает состояние, запрос и From
. Каждый новый процесс проходил через дерево и вызывал gen_server:reply/2
с результатом. Это решение, похоже, не сработало, потому что использование памяти и процессора возросло. Я предполагаю, что это произошло, потому что состояние было скопировано в порожденный процесс для каждого вызова.