Оптимизация БД таблицы типа MEMORY

12 3
S1
На сайте с 02.10.2016
Offline
138
1038

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

На сайте размещен форум, и нужно оптимизировать таблицу session

Записей в ней не много, а размер быстро разрастается из-за фрагментации

Хочу прикрутить в крон нечто типа скрипта, но не нашел скрипт и не понятна сама возможность

Постоянно обмениваюсь ссылками с качественными сайтами по теме электроника, электронные компоненты, и тд.
O
На сайте с 28.07.2009
Offline
131
#1

Что-то вы непонятное хотите, если честно. Для начала бы неплохо СУБД с версией и проблемный софт обозначить. И с чего Вы взяли, что таблица разрастается и именно из-за фрагментации. MEMORY по факту ничего не хранит, перезапуск базы все вычистит.

занимаюсь автоматизацией торговли (http://olegon.ru)
danforth
На сайте с 18.12.2015
Offline
153
#2

MEMORY хранит, это BLACKHOLE не хранит. Проблема там не во фрагментации, а в том что хип MySQL не отдает сразу. Так как вы на шареде, вариантов у вас не много. По хорошему, сессии не стоит хранить в базе. Поищите в настройках движка чтобы переключить сессии в файлы.

Junior Web Developer
S1
На сайте с 02.10.2016
Offline
138
#3
olegon:
Для начала бы неплохо СУБД с версией и проблемный софт обозначить. И с чего Вы взяли, что таблица разрастается и именно из-за фрагментации.

Если детально, то движок - xenforo v2.1

Таблица - xf_session_activity

То, что она занимает много места из-за фрагментов, выяснил через бэкап.

Если сделать бэкап таблицы и после восстановление с этого бэкапа, то размер ужимается раз примерно в сорок раз. Грубо с 80 MB до 2MB. Все записи при этом соответствуют исходной. Через месяц размер таблицы опять разрастается. И тд. Визуально, скорость при большой таблице, ниже. После восстановления с бэкапа, скорость возрастает.

Но все это я делал через phpmyadmin, вручную

Хочется автоматизировать процесс

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#4

Да тупо очищайте эту таблицу и всё, по крону раз в три месяца. Или же установите какой-нибудь редис и храните сессии там.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
S1
На сайте с 02.10.2016
Offline
138
#5
LEOnidUKG:
Да тупо очищайте эту таблицу и всё, по крону раз в три месяца.

Думал уже эти варианты

В таблице хранятся записи - просмотренных тем участников и еще что-то.

Сами сессии хранятся в другой таблице - xf_session, она уже типа MyISAM, и оптимизируется без проблем

Не стал вообщем.

LEOnidUKG:
Или же установите какой-нибудь редис и храните сессии там.

На шареде это не реально.

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#6

Так в чём суть проблемы то? Места не хватает на хостинге?

Aisamiery
На сайте с 12.04.2015
Offline
293
#7
sanek1991:
На шареде это не реально.

Есть шареды с редисом, например beget или netangels

А попробуйте запустить на таблице запрос:

alter table xf_session_activity engine=memory;

Ну так чисто для чистоты эксперимента

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
SeVlad
На сайте с 03.11.2008
Offline
1609
#8
sanek1991:
На шареде это не реально.

Смотря какой шаред. Как минимум 2шт есть с редисом.

Но задавать вопросы по хостингу нужно в спец. разделе с соблюдением его правил.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
S1
На сайте с 02.10.2016
Offline
138
#9
LEOnidUKG:
Так в чём суть проблемы то? Места не хватает на хостинге?

Я же писал, в основном из-за снижения скорости. Место, это уже второстепенно.

---------- Добавлено 23.01.2020 в 14:26 ----------

Aisamiery:
Есть шареды с редисом, например beget или netangels

А попробуйте запустить на таблице запрос:

Ну так чисто для чистоты эксперимента

Была такая идея, но не силен в этих запросах.

В бэкапе, есть еще команды создания ключей:

ALTER TABLE `xf_session_activity1`
ADD PRIMARY KEY (`user_id`,`unique_key`) USING BTREE,
ADD KEY `view_date` (`view_date`) USING BTREE;
COMMIT;

Их надо делать после - alter table xf_session_activity engine=memory; ?

или они автоматически создадутся как в исходнике ?

Aisamiery
На сайте с 12.04.2015
Offline
293
#10
sanek1991:

Была такая идея, но не силен в этих запросах.
В бэкапе, есть еще команды создания ключей:

Их надо делать после - alter table xf_session_activity engine=memory; ?
или они автоматически создадутся как в исходнике ?

Вообще нет, вы же ключи не удаляете, а в бэкапе они есть, потому что это же бэкап и надо воссоздать таблицу полностью.

Просто сделайте тот запрос что я написал. Это помогает по крайней мере освободить место из под таблиц InnoDB движка, может и с MEMORY сработает.

12 3

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