Вход в таблицу innoDB или локальный файл, какой из них быстрее? - PullRequest
1 голос
/ 16 января 2011

Мне нужно реализовать простой механизм регистрации для моего веб-приложения. У меня есть два варианта, один из них - поместить записи в локальный файл, например, где-то вроде /tmp/file.log, другой способ - использовать таблицу InnoDB (расположенную в занятой базе данных), которая предназначена только для записи и не требует операции чтения. Таблица прямая, с двумя столбцами, один из которых является основным столбцом идентификатора, который автоматически увеличивается, а другой - это текст журнала типа text (1024). Запись будет вызываться 10 раз в секунду, это означает, что она делает 10 записей в секунду. В настоящее время у меня нет доступа к производственному серверу, чтобы фактически сравнить эти два различных способа в реальной среде. Вообще говоря, какой из них будет быстрее и почему?

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

Спасибо.

Ответы [ 2 ]

1 голос
/ 16 января 2011

Решения БД добавляют много сложности:

  • Связь клиент-сервер
  • Анализатор SQL
  • Механизм запросов
  • ...

Файловое решение является прямым, и большинство операционных систем предоставляют бесплатное кэширование записи на несъемных устройствах.

Итак, перейдите к файлу.Это не будет медленнее и намного проще!

1 голос
/ 16 января 2011

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

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

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

...