Назад | Перейти на главную страницу

Посещение памяти удаленной системы по сети быстрее, чем поиск на локальном диске?

Кажется, что сетевые соединения обычно быстрее, чем поиск на локальном диске, как обсуждалось в вопросе Сети теперь быстрее дисков?

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

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

PS: Я не являюсь носителем английского языка. Так что извиняюсь за мои неточные выражения. Спасибо!

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

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

Существует большая разница между относительно простой системой кеширования и попыткой запустить базу данных в памяти ряда распределенных систем, как вы, кажется, делаете. Некоторые транзакции базы данных могут стать очень дешевыми (то есть быстрыми), но другие могут стать намного более дорогими, и вы можете обнаружить, что необходимость проектирования для обеспечения высокой производительности в такой системе накладывает ограничения на дизайн вашей БД, которые сводят на нет любые преимущества.

Так что мой ответ вам довольно скучный: Это зависит. Вам нужно будет протестировать вашу конкретную систему под нагрузкой, чтобы увидеть, трансформируются ли любые возможные теоретические приросты производительности в реальные для вашей конкретной ситуации.

Ответ на этот вопрос, как и на многие вопросы производительности, следующий:

«Может быть. Оцените свою ситуацию и узнайте».

Учитывая популярность memcached, я бы сказал определенно да.

Я получаю менее 1 мс при более чем 4 сетевых переходах в моей сети, в то время как поиск по диску на 7200 об / мин может занять от 1 мс (если вы чрезвычайно lucky), от 15 мс (в среднем) до нескольких секунд (когда сектор не читается и накопитель выполняет повторное чтение).

У вас по-прежнему должна быть выделенная локальная сеть для доступа к экземплярам memcached.