Являются ли сеансы быстрее, чем запросы к базе данных? - PullRequest
7 голосов
/ 11 июля 2010

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

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

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

Ответы [ 3 ]

10 голосов
/ 11 июля 2010

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

1 голос
/ 11 июля 2010

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

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

Страница входа

// database query run once only at this page
// if user exits, you store it into session else redirect with an error message
0 голосов
/ 12 июля 2010

На самом деле, ответ Карла не совсем правильный, и сказать «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)

...