Войти в файл через PHP или войти в базу данных MySQL - что быстрее? - PullRequest
11 голосов
/ 08 октября 2008

У меня есть веб-сайт на базе базы данных, обслуживающий около 50 000 страниц.

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

Как бы вы вошли, что вы думаете, быстрее:

a) Используйте PHP для добавления в конец текстового файла журнала.

b) Используйте MySQL, чтобы ВСТАВИТЬ В НЕиндексированную таблицу журнала.

Ответы [ 15 ]

0 голосов
/ 08 октября 2008

Если это для сайта, управляемого базой данных, почему вы просто не используете встроенные возможности ведения журналов Apache или IIS и подходящий инструмент отчетности, такой как AWStats и выше, всегда есть Google Analytics

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

0 голосов
/ 08 октября 2008

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

При тестировании MySQL попробуйте и MyISAM, и INNODB. Теоретически Innodb будет работать лучше, поскольку имеет блокировку на уровне строк.

0 голосов
/ 08 октября 2008

Несколько соображений:

  1. Как вы думаете, вы хотите объединить данные журнала с другими данными в базе данных? Если это так, накладные расходы на вставку базы данных, вероятно, оправданы, так что существующие отношения могут быть легко использованы.
  2. Позволит ли регистрация данных в базе данных значительно сократить объем данных, которые вы регистрируете (из-за существующих связей в БД)? Например, журнал в базе данных пользовательских действий может быть просто таблицей, содержащей идентификатор пользователя, код активности и метку времени. Файл журнала, этот файл в файле не был бы удобочитаемым человеком. В зависимости от ваших потребностей, вам потребуется записать хотя бы некоторые данные пользователя в файл журнала, чтобы гарантировать, что он может быть полезен и удобен для чтения человеком.
  3. Есть ли шанс, что вы захотите использовать эти данные журнала во внешнем интерфейсе или через инструмент администратора в будущем? Если это так, запись в БД, вероятно, предпочтительнее.
0 голосов
/ 08 октября 2008

Все зависит от вашей инфраструктуры и ограничений. Если диск медленный, запись будет медленной. Если SQL-сервер отстает от запросов, вставка будет медленной. Возможно, лучше всего использовать плоский файл, но я бы написал ваш код или использовал существующий код (PEAR :: Log), чтобы вы могли изменить провайдера и метод хранения по своему желанию.

0 голосов
/ 08 октября 2008

В файл будет быстрее, но в БД будет лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...