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

Оператор == всегда предназначен для сравнения ссылок на объекты, тогда как метод сравнения строк .equals () переопределяется для сравнения содержимого:

String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1 == s2); // It prints false (reference comparison)
System.out.println(s1.equals(s2)); // It prints true (content comparison)
7
задан Ned Batchelder 11 July 2010 в 20:26
поделиться

3 ответа

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

10
ответ дан 5 December 2019 в 15:19
поделиться

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

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

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

// database query run once only at this page
// if user exits, you store it into session else redirect with an error message
1
ответ дан 5 December 2019 в 15:19
поделиться

На самом деле, ответ Карла не совсем правильный, и упоминание «MySql» тоже не помогает.

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

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

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

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

0
ответ дан 5 December 2019 в 15:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: