Joomla! имеет возможность выбрать метод хранения сессии: нет (файл), APC, базы данных, Eaccelerator, Memcache и XCache обработчики хранения возможны. Но на самом деле Joomla! до сих пор хранит данные сессии в базе данных и выполняет три SQL-запросов в каждой загрузке страницы, даже если кеширование на сессии и хранения не «база данных».
Как мы можем решить эту проблему и снизить нагрузку MySQL?
jos_session таблица хранится с использованием механизма хранения MyISAM — давайте хранить эту таблицу в памяти с помощью двигателя ПАМЯТИ хранения!
Для начала нам нужно изменить тип данных поля, так как двигатель MEMORY хранения не поддерживает BLOB / TEXT столбцы:
ALTER TABLE `jos_session` CHANGE `data` `data` VARCHAR( 5000 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
5000 символов, как правило, достаточно для обработки данных сессии, вы можете либо установка более, если возникли проблемы (не может Логин) или установки его на 0, если ваш Joomla хранения сессии метод не является «базой данных».
Теперь давайте изменим двигателя:
ALTER TABLE `jos_session` TYPE = memory
ПАМЯТИ MySQL хранения гораздо быстрее, чем MyISAM. Единственное, что заседания будут потеряны, если сервер не работает — но в 99,9999999999999999999% вам не нужно заботиться об этом, пользователи просто повторно Войти.
Все эти операции могут быть легко выполнен в PHPMyAdmin.
Кроме того, в самой таблице jos_session сайтов как правило, имеет накладные расходы и требует оптимизации — ПАМЯТЬ хранения поможет предотвратить это.
Накладные расходы могут привести в базе данных с коррупцией, и вы не будете даже в состоянии Войти в Backend, поэтому нужно оптимизировать MySQL таблицы и особенно jos_session регулярно.
Просмотров: 2537
После выполнения команды ALTER TABLE `jos_session` TYPE = memory
выходит ошибка #1114 — The table ‘#sql-1530_1983’ is full
Что делать?
Возможно вам не хватает оперативной памяти. Либо у вас какая проблема с сервером. Верните обратно в MyISAM
ALTER TABLE `jos_session` TYPE = MyISAM