Являются ли сеансы быстрее, чем запросы к базе данных?
Например, пользователь входит в систему, а система хранит информацию о них, например: 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)