php: сессии против базы данных - PullRequest
7 голосов
/ 17 июля 2009

У меня есть класс, который получает свой член (более или менее 10 членов) из базы данных.

Мой вопрос: эффективнее ли получать их каждый раз из БД (MySQL), оставляя только идентификатор в массиве сеанса или сохранять их непосредственно в массиве сеанса?

И так ли велика разница в производительности? (дана база данных с, скажем, 100.000 строк)

Ответы [ 3 ]

11 голосов
/ 17 июля 2009

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

Так что придерживайтесь сессии.

Если вы действительно беспокоитесь о скорости, используйте кэш в памяти, такой как APC или memcache. Беспокойство вызывает беспокойство по поводу скорости 10 элементов из файловой системы или базы данных. Разница будет настолько минимальной, что не будет иметь значения.

Примечание: приведенное выше предполагает две вещи:

  1. Запрос выполняется (получение 10 строк из 100 КБ должно быть выполнено менее чем за 0,1 секунды); и
  2. Вы делаете один запрос, а не 10.
8 голосов
/ 17 июля 2009

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

Преждевременная оптимизация - корень все зло.

2 голосов
/ 27 октября 2016

Если в вашей таблице 100 000 строк или 10 000 000 строк, это не имеет значения, если у вас правильно настроены индексы.

Сказав, что файловый сеанс PHP по умолчанию определенно быстрее, чем извлечение из базы данных, но вы не заметите разницу, пока ваш сайт не будет интенсивно использоваться, например, 5000+ запросов в секунду.

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