Что дороже для чтения шаблона: запрос к базе данных или чтение файла?


Мой вопрос довольно прост; Мне нужно прочитать некоторые шаблоны (на PHP) и отправить их клиенту.

Для такого рода данных, в частности текста/html и текста/javascript; дороже ли считывать их из базы данных MySQL или из файлов?

С уважением
Том

Безопасность Inb4; Я в курсе.

PS: Я читал другие темы о подобных вопросах, но они либо имели отношение к другим данным, либо не получили ответа.

Author: TomWilde, 2010-12-05

3 answers

Чтение из базы данных обходится дороже, без вопросов.

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

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

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

 6
Author: Dan Grossman, 2010-12-05 09:02:15

Существует множество факторов, которые могут повлиять на то, насколько дорого и то, и другое.

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

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

  • Наличие их в базе данных обычно облегчает нескольким людям редактировать.

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

 1
Author: simshaun, 2010-12-05 08:56:16

Это действительно не имеет достаточного значения, чтобы беспокоить вас. С каким объемом вы работаете? Будет ли у вас более миллиона просмотров страниц в день? Если нет, я бы сказал, выберите тот, с которым вам проще всего кодировать и поддерживать, и не беспокойтесь о расходах на альтернативы, пока это не станет проблемой.

В частности, если ваши шаблоны в настоящее время находятся в форме файла, я бы оставил их там, и если они в настоящее время находятся в форме базы данных, я бы оставил их там.

 0
Author: Toby Allen, 2010-12-05 08:53:02