Лучший движок хранения MySQL для использования для хранения сессий PHP


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

Какой движок хранения MySQL лучше всего подходит для этой задачи? MyISAM, InnoDB, MariaDB (чего я не вижу в PHPMyAdmin), память или что-то совсем другое?

4 6

4 ответа:

"лучший" ничего не значит. Вам нужно выразить свои ограничения: нужна ли вам последовательность? Долговечность? Высокая доступность? Представление? Сочетание всех этих свойств? Можете ли вы позволить себе потерять свои сеансы? Могут ли они уместиться в памяти? Нужно ли поддерживать параллельный доступ к одним и тем же данным?

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

Теперь, если производительность действительно является ограничением, я бы предпочел использовать движок NoSQL (т. е. не MySQL). Для хранения данных сеанса, Redis обычно делает очень хорошую работу, и достаточно легко интегрировать и развернуть.

Механизм хранения памяти звучит как лучший вариант. Имейте в виду, что это хорошо для временных сеансов.

Http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html

Это зависит от того, как вы оцениваете "лучшее":

MyISAM является наиболее распространенным (многие пакеты общего хостинга позволяют использовать только MyISAM). кроме того, он довольно ограничен в аспекте контроля отношений, поэтому вы устанавливаете его очень быстро и легко. если вы хотите переносимости и быстрой реализации в нескольких сценариях хостинга, MYISAM лучше всего.

InnoDB позволяет создавать связи и сохранять целостность данных, связывая ключи в разных таблицах, что означает больше работы, но много более профессиональный дизайн БД. многие пакеты общего хостинга не реализуют InnoDB, поэтому при экспорте структуры таблицы из одной среды в другую вам может потребоваться дополнительная работа. если вы хотите управлять и контролировать realationship, INNODB лучше всего.

Что касается переносимости данных, база данных InnoDB будет полностью принята MyISAM (потому что MyISAM не проверяет целостность данных: "есть ли пользователь номер 4 в базе данных пользователя, когда я вставляю новую запись в user_car, например"). Если вы начинаете с MyISAM, экспорт в полноценную базу данных InnoDB будет кошмаром, даже если ваши данные имеют все ключи, табличные данные должны быть импортированы в правильном порядке (пользователь и автомобиль, перед user_car).

Мариадб? никогда, просто потому, что меньше людей используют его, поэтому у вас будет меньше поддержки, по сравнению с MyISAM и InnoDB.

Скоба нижняя линия новшеств.

Если вы не wan't накладные расходы от SQL-соединения, рассмотрите возможность использования memcached Session sorage. См. http://php.net/manual/en/memcached.sessions.php