Sadda.ru Ironetcart Андроид Ассемблер MASM32 Linux Все статьи Table of Contents


 

Скорость движка форума: файлы или база данных

  Макс Петров Декабрь 2014

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

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

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

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

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

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



Ironetcart

      Техническая поддержка: http://ironburattin.ru
      Взять движок: Форум на файлах «Ironetcart» (скачать)

      Разработка форумного движка
      Форум «Железный Бураттин» (название и концепция)
      Статическая защита форм
      Идеальная капча
      Как я победил магические кавычки
      Внеклавиатурные символы HTML
      Хранимые XSS-атаки и защита от них (удаляем javascript из html в браузере)
      Защита визуального html-редактора (фильтрация HTML на стороне сервера)
      Скорость движка форума: файлы или база данных
      Прогресс-бар на PHP
      Зачем тупому форуму поиск?

     


© Max Petrov При использовании материалов ссылка на sadda.ru обязательна