Являются ли сеансы быстрее, чем запросы к базе данных?

Например, пользователь входит в систему, а система хранит информацию о них, например: birth dateтак быстрее получить эту информацию из сеанса или запросить ее у базы данных?

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

Я использую PHP и MySQL.

3 ответа

Решение

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

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

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

Страница авторизации

// database query run once only at this page
// if user exits, you store it into session else redirect with an error message

На самом деле, ответ Карла не совсем правильный, и сказать "MySql" тоже не поможет.

Видите ли, системы баз данных, такие как mysql, имеют "механизмы хранения". Они обычно записывают в файлы, но есть некоторые, которые записывают в память (MEMORY), другие записывают в память, но сохраняют резервную копию файла (MyISAM), а некоторые - в /dev/null (BLACKHOLE).

Так что все зависит от механизма хранения:

  • MyISAM - движок по умолчанию для MySQL 3.23 с отличной производительностью
  • MEMORY - основанный на хеше, хранится в памяти, полезен для временных таблиц
  • InnoDB - поддерживает транзакции, блокировку на уровне строк и внешние ключи
  • BerkeleyDB - поддерживает транзакции и блокировку на уровне страниц
  • BLACKHOLE - /dev/null механизм хранения (все, что вы пишете в него, исчезает)
  • ПРИМЕР - Пример хранилища движка
  • АРХИВ - Механизм архивного хранения
  • CSV - CSV хранилище
  • ndbcluster - Кластерные, отказоустойчивые, основанные на памяти таблицы
  • FEDERATED - интегрированный механизм хранения MySQL
  • MRG_MYISAM - Коллекция идентичных таблиц MyISAM
  • ISAM - устаревший механизм хранения

(список из списка PhpMyAdmin Egines)

Другие вопросы по тегам