В основном читайте только использование DETS

StackOverflow https://stackoverflow.com/questions/4790090

  •  24-10-2019
  •  | 
  •  

Вопрос

Поэтому я использовал ETS - отлично работает. Тем не менее, я использую его как кэш данных маршрута, которые я загружаю при загрузке модуля, и сохраняю при изменении (оно читается гораздо больше, чем написано).

Я думал, что Dets сделает вещи намного чище - мне не нужно беспокоиться о управлении настойчивостью стола. Будет ли это хорошо использовать DETS? (Размер не проблема, в основном связанный с значительным повышением производительности чтения - все данные могут легко вписаться в память).

Это было полезно?

Решение

DETS намного медленнее, чем ETS в большинстве случаев, но я думаю, что если размер ваших данных мал, то большинство, если он будет кэширован дисковым кешем и будет быстрее извлекать второй раз, когда вы его читаете, так что лучшее - это Попробуйте это с вашим типом использования

Но задумались ли вы использовать Mnesia вместо ETS напрямую? С типом таблицы Mnesia Disc_copies вы получите скорость ETS и все еще настойчивости

Другие советы

Прямо из Dets Man Page:

«Поскольку все операции, выполняемые DETS, являются дисковыми операциями, важно понимать, что одна операция поиска включает в себя серию операций на дисковом поиске и чтении. По этой причине функции DETS намного медленнее, чем соответствующие функции ETS, хотя и функции, хотя и функции, хотя DETS экспортирует аналогичный интерфейс ».

То есть для хранения в чтении, DETS не является оптимальным выбором.

(Я должен признать, что я нахожу это дизайнерским решением странным - лучшая реализация должна кэшировать недавние поиски. Однако, поскольку эти ETS и DETS являются основными средствами в Эрланге, я думаю, что реализации оставили эту оптимизацию для пользователей.)

Для написания редко прочитайте много данных, которые вы в порядке, держите в памяти, проверьте «мохиглобал». У MochiWeb есть аккуратный модуль, который злоупотребляет общей кучей Erlang для констант модулей через систему управления кодом, чтобы обеспечить сверхбыстрый доступ к терминам, генерируя модули с заданными значениями в качестве константов на лету.

Riak использует мохиглобаль для состояния кольца, IIRC.

Ее источник:

https://github.com/mochi/mochiweb/blob/master/src/mochiglobal.erl

Конечно, здесь нет абсолютно никакой настойчивости, но если вы хотите сильно оптимизировать чтения, вы не можете стать намного лучше, чем это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top