php: сеансы против базы данных

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

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

И насколько велика разница в производительности? (с учетом базы данных с 100 000 строк)

Related of "php: сеансы против базы данных"

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

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

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

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

  1. Запрос является результативным (получение 10 строк из 100k должно выполняться менее чем за 0,1 секунды); а также
  2. Вы делаете один запрос не 10.

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

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

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

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