Хранение сессий: Файлы vs MySQL

12
Metal Messiah
На сайте с 01.08.2010
Offline
152
1984

Создам очередной повод для холивара.

В различных инструкциях пишут, что сессии в базе данных позволяют быстрее отдавать страницу, чем сессии в файлах. Конкретно сейчас ставлю форум SMF, там есть такая опция при установке.

Оставим в стороне преимущества сессий БД для работы кластера серверов (общие сессии для всех) и прочие довольно заумные фишки для очень крупных проектов.

Вот, допустим, сессия в файле. Читается файл с диска, затрата времени на поиск файла в таблице файловой системы и на само чтение файла.

Сессия в БД: идет подключение к серверу БД, запрос, его парсинг, чтение из таблицы БД (фактически файла, т.е. опять же поиск в файловой системе и чтение файла, только уже не конкретного, а проход от начала до нужного смещения, т.к. таблица крупная).

БД может работать быстрее файла только если эта запись (сессия) закеширована в памяти.

А сейчас большинство VPS идут с SSD дисками, т.е. скорость чтения с них будет порядка скорости чтения из памяти.

Вопрос: так все таки зачем нагружать базу данных (теоретически и так нагруженную) еще и сессиями?

Где хранить сессии?

база данных
0% (0)
файлы
40% (2)
другое
60% (3)
Всего проголосовало: 5
anonymous, думай что говоришь и не забывай подписать отзыв :)
Оптимизайка
На сайте с 11.03.2012
Offline
396
#1

Почему сразу MySQL, почему не key-value database, memcached в конце-концов?

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
LEOnidUKG
На сайте с 25.11.2006
Offline
1726
#2

Если у вас свой VPS, то храните сессии в файлах, НО на виртуальном диске в памяти.

А вообще никогда не понимал хранения сессий в БД. Или на крайний случай в БД, то таблица должна иметь формат MEMORY

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
edogs software
На сайте с 15.12.2005
Offline
775
#3

Мы Вам один страшный секрет скажем.

MySQL хранит данные в файлах.

Поэтому вопрос "сессии в файлах vs mysql" отдает чем-то странным:)

---------- Добавлено 16.08.2015 в 16:55 ----------

LEOnidUKG:
А вообще никогда не понимал хранения сессий в БД.
Проще организовывать к ним внешний доступ.
Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
Mik Foxi
На сайте с 02.03.2011
Offline
1076
#4

memcached самая тема для этого.

Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ + партнерка, до 40$ с продажи.
Mad_Man
На сайте с 10.11.2008
Offline
162
#5
edogs:
Мы Вам один страшный секрет скажем.
MySQL хранит данные в файлах.
Поэтому вопрос "сессии в файлах vs mysql" отдает чем-то странным

Продолжу демагогию: в мире Unix-подобных ОСей всё есть файл или сокет. И слово "файл" было использовано в качестве примера не в данном определении, что понятно и ребёнку, а в качестве примера простейшей реализации хранения без дополнительных абстракций и оптимизаций для доступа к данным. С тем же успехом можно было залетать в любой тред и начать иметь мозги собеседнику фразами "а ты чо, низнал, шо директория - тожэ файл?"

K
На сайте с 03.06.2015
Offline
45
#6
Mad_Man:
"а ты чо, низнал, шо директория - тожэ файл?"

Следовательно все читается из файлов. Файлы как файлы тоже кешируются. Имеется даже функция очистки файлового кеша. Я про php.

Кроме того, несуразно соединять с бд такие простые фичи как например капча на сессии. В сущности сессии и хранят данных таких простых фич.

MYSQL PHP JS HTML CSS SEO TXT США СССР
edogs software
На сайте с 15.12.2005
Offline
775
#7
Mad_Man:
Продолжу демагогию: в мире Unix-подобных ОСей всё есть файл или сокет. И слово "файл" было использовано в качестве примера не в данном определении, что понятно и ребёнку, а в качестве примера простейшей реализации хранения без дополнительных абстракций и оптимизаций для доступа к данным. С тем же успехом можно было залетать в любой тред и начать иметь мозги собеседнику фразами "а ты чо, низнал, шо директория - тожэ файл?"

Больше половины людей задающихся таким вопросом на самом деле не понимают, что mysql хранит данные на диске в файлах. Когда это понимание приходит - как правило вопрос "мускул или файлы" отпадает сам по себе.

Упускать в ответе этот важный момент или еще хуже - считать этот момент демагогией - ошибочно.

Mad_Man
На сайте с 10.11.2008
Offline
162
#8
edogs:
Больше половины людей задающихся таким вопросом на самом деле не понимают, что mysql хранит данные на диске в файлах. Когда это понимание приходит - как правило вопрос "мускул или файлы" отпадает сам по себе.
Упускать в ответе этот важный момент или еще хуже - считать этот момент демагогией - ошибочно.

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

edogs software
На сайте с 15.12.2005
Offline
775
#9
Mad_Man:
Однако мускул предоставляет из коробки оптимизацию выборки, а также доступ к оперативе как в случае индексов, так и в случае варианта полного хранения записей сессий в оперативе с возможностью кеширования результата.

Это какая-то унылая попытка холивара. ФС тоже хранится в оперативке, а b-tree не особо отличается от структуры ext.

Mad_Man:
И именно это подразумевалось изначально для дискуссии.

А, подразумевалось. Мы отвечали по тому, что написано. Но раз Вы решили придраться основываясь на том, что "подразумевалось", то ок.

Metal Messiah
На сайте с 01.08.2010
Offline
152
#10
Больше половины людей задающихся таким вопросом на самом деле не понимают, что mysql хранит данные на диске в файлах.

Собственно я это и писал в 1-м посте. Просто слишком уж много мануалов, рекомендующих MySQL.

ФС тоже хранится в оперативке

Чего не знал того не знал. И сколько ее хранится в ОЗУ? А если файлов-сессий столько что mc через putty прорисовывает директорию несколько минут? (была реальная ситуация)? Думаю в кеше будут только последние файлы, причем в кеше жесткого диска.

Из всего выше сказанного я понял что наиболее удачный вариант при работе 1го сервера - файлы, желательно на ram-диске.

Для кластера из нескольких серверов, которые должны пользоваться общими сессиями, это MySQL таблица типа MEMORY.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий