2013-03-14 5 views
0

Мы запускаем систему, предназначенную для кеша, в настоящее время записывает и удаляет около 1000 небольших файлов (10 тыс.) Каждый час. В ближайшем будущем это число будет составлять около 10 000 - 20 000 файлов, которые будут записываться и удаляться каждый час.Могут ли массированные записи и удаление файлов повредить нашу производительность сервера?

Для каждого файла, который записывается в новую строку на нашем MySQL БД добавляется и удаляется при удалении файла на час позже.

Мой вопрос:

  1. Может это излишнее записи & операции удаления повредить нашу производительность сервера в конечном счете, так или иначе? (кстати, мы в настоящее время запустить это на VPS и вскоре на выделенном сервере.)
  2. Может написание и удаление так много строк в конечном итоге замедлить нашу БД?
+0

Вы можете настроить тестовую систему (если у вас ее еще нет) и попробовать сами. – ellak

+0

Сохраняете ли вы файлы в памяти или на диске? Каково использование памяти, как на вашем сервере? – tjameson

ответ

1

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

Как правило, операция, которая влияет на структуру файловой системы, такие как творения файлов и удаление файлов требуют некоторого синхронную диска IO, поэтому операционная система не потеряет эти изменения после сбоя питания. Хотя некоторые операционные системы и файловые системы могут поддерживать более расслабленную политику для этого. Например, файловая система UFS на FreeBSD имеет хороший вариант «мягких обновлений», который делает это. Вероятно, etx3/Linus должны иметь аналогичную функцию.

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

1

Вы должны сделать некоторые расчеты и оценить необходимую пропускную способность для хранилища. В худшем случае 20000 файлов x 10K = 200 МБ в час, что является очень низким требованием. Удаление файла на современных файловых системах занимает очень мало времени.

На мой взгляд, вам не придется беспокоиться, особенно если ваши приложения создает и последовательно удаляет файлы.

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

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

Единственным недостатком является то, что обработка много маленьких файлов может привести к фрагментации диска, если файловая система подвергается к нему.

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

Смежные вопросы