Можно ли как-то оптимизировать на шаред хостинге таблицу с типом данных MEMORY, кроме как ручного метода копирования в новую, и последующим ее переименованием ?
На сайте размещен форум, и нужно оптимизировать таблицу session
Записей в ней не много, а размер быстро разрастается из-за фрагментации
Хочу прикрутить в крон нечто типа скрипта, но не нашел скрипт и не понятна сама возможность
olegon
Что-то вы непонятное хотите, если честно. Для начала бы неплохо СУБД с версией и проблемный софт обозначить. И с чего Вы взяли, что таблица разрастается и именно из-за фрагментации. MEMORY по факту ничего не хранит, перезапуск базы все вычистит.
danforth
MEMORY хранит, это BLACKHOLE не хранит. Проблема там не во фрагментации, а в том что хип MySQL не отдает сразу. Так как вы на шареде, вариантов у вас не много. По хорошему, сессии не стоит хранить в базе. Поищите в настройках движка чтобы переключить сессии в файлы.
sanek1991
olegon: Для начала бы неплохо СУБД с версией и проблемный софт обозначить. И с чего Вы взяли, что таблица разрастается и именно из-за фрагментации.
Если детально, то движок — xenforo v2.1
Таблица — xf_session_activity
То, что она занимает много места из-за фрагментов, выяснил через бэкап.
Если сделать бэкап таблицы и после восстановление с этого бэкапа, то размер ужимается раз примерно в сорок раз. Грубо с 80 MB до 2MB. Все записи при этом соответствуют исходной. Через месяц размер таблицы опять разрастается. И тд. Визуально, скорость при большой таблице, ниже. После восстановления с бэкапа, скорость возрастает.
Но все это я делал через phpmyadmin, вручную
Хочется автоматизировать процесс
LEOnidUKG
Да тупо очищайте эту таблицу и всё, по крону раз в три месяца. Или же установите какой-нибудь редис и храните сессии там.
sanek1991
LEOnidUKG: Да тупо очищайте эту таблицу и всё, по крону раз в три месяца.
Думал уже эти варианты
В таблице хранятся записи — просмотренных тем участников и еще что-то.
Сами сессии хранятся в другой таблице — xf_session, она уже типа MyISAM, и оптимизируется без проблем
Не стал вообщем.
LEOnidUKG: Или же установите какой-нибудь редис и храните сессии там.
На шареде это не реально.
LEOnidUKG
Так в чём суть проблемы то? Места не хватает на хостинге?
Aisamiery
sanek1991: На шареде это не реально.
Есть шареды с редисом, например beget или netangels
А попробуйте запустить на таблице запрос:
alter table xf_session_activity engine=memory;
Ну так чисто для чистоты эксперимента
SeVlad
sanek1991: На шареде это не реально.
Смотря какой шаред. Как минимум 2шт есть с редисом.
Но задавать вопросы по хостингу нужно в спец. разделе с соблюдением его правил.
sanek1991
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
sanek1991:
Была такая идея, но не силен в этих запросах. В бэкапе, есть еще команды создания ключей:
Их надо делать после — alter table xf_session_activity engine=memory; ? или они автоматически создадутся как в исходнике ?
Вообще нет, вы же ключи не удаляете, а в бэкапе они есть, потому что это же бэкап и надо воссоздать таблицу полностью.
Просто сделайте тот запрос что я написал. Это помогает по крайней мере освободить место из под таблиц InnoDB движка, может и с MEMORY сработает.
sanek1991
Можно ли как-то оптимизировать на шаред хостинге таблицу с типом данных MEMORY, кроме как ручного метода копирования в новую, и последующим ее переименованием ?
На сайте размещен форум, и нужно оптимизировать таблицу session
Записей в ней не много, а размер быстро разрастается из-за фрагментации
Хочу прикрутить в крон нечто типа скрипта, но не нашел скрипт и не понятна сама возможность
olegon
Что-то вы непонятное хотите, если честно. Для начала бы неплохо СУБД с версией и проблемный софт обозначить. И с чего Вы взяли, что таблица разрастается и именно из-за фрагментации. MEMORY по факту ничего не хранит, перезапуск базы все вычистит.
danforth
MEMORY хранит, это BLACKHOLE не хранит. Проблема там не во фрагментации, а в том что хип MySQL не отдает сразу. Так как вы на шареде, вариантов у вас не много. По хорошему, сессии не стоит хранить в базе. Поищите в настройках движка чтобы переключить сессии в файлы.
sanek1991
Для начала бы неплохо СУБД с версией и проблемный софт обозначить. И с чего Вы взяли, что таблица разрастается и именно из-за фрагментации.
Если детально, то движок — xenforo v2.1
Таблица — xf_session_activity
То, что она занимает много места из-за фрагментов, выяснил через бэкап.
Если сделать бэкап таблицы и после восстановление с этого бэкапа, то размер ужимается раз примерно в сорок раз. Грубо с 80 MB до 2MB. Все записи при этом соответствуют исходной. Через месяц размер таблицы опять разрастается. И тд. Визуально, скорость при большой таблице, ниже. После восстановления с бэкапа, скорость возрастает.
Но все это я делал через phpmyadmin, вручную
Хочется автоматизировать процесс
LEOnidUKG
Да тупо очищайте эту таблицу и всё, по крону раз в три месяца. Или же установите какой-нибудь редис и храните сессии там.
sanek1991
Да тупо очищайте эту таблицу и всё, по крону раз в три месяца.
Думал уже эти варианты
В таблице хранятся записи — просмотренных тем участников и еще что-то.
Сами сессии хранятся в другой таблице — xf_session, она уже типа MyISAM, и оптимизируется без проблем
Не стал вообщем.
Или же установите какой-нибудь редис и храните сессии там.
На шареде это не реально.
LEOnidUKG
Так в чём суть проблемы то? Места не хватает на хостинге?
Aisamiery
На шареде это не реально.
Есть шареды с редисом, например beget или netangels
А попробуйте запустить на таблице запрос:
Ну так чисто для чистоты эксперимента
SeVlad
На шареде это не реально.
Смотря какой шаред. Как минимум 2шт есть с редисом.
Но задавать вопросы по хостингу нужно в спец. разделе с соблюдением его правил.
sanek1991
Так в чём суть проблемы то? Места не хватает на хостинге?
Я же писал, в основном из-за снижения скорости. Место, это уже второстепенно.
———- Добавлено 23.01.2020 в 14:26 ———-
Есть шареды с редисом, например beget или netangels
А попробуйте запустить на таблице запрос:
Ну так чисто для чистоты эксперимента
Была такая идея, но не силен в этих запросах.
В бэкапе, есть еще команды создания ключей:
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
Была такая идея, но не силен в этих запросах.
В бэкапе, есть еще команды создания ключей:
Их надо делать после — alter table xf_session_activity engine=memory; ?
или они автоматически создадутся как в исходнике ?
Вообще нет, вы же ключи не удаляете, а в бэкапе они есть, потому что это же бэкап и надо воссоздать таблицу полностью.
Просто сделайте тот запрос что я написал. Это помогает по крайней мере освободить место из под таблиц InnoDB движка, может и с MEMORY сработает.