База данных уже перевалила за 500 МБ - это нормально?

Здравствуйте.

CS-Cart Ultimate - 10 витрин.

База данных уже перевалила за 500 МБ - это нормально? Вот таблицы которые занимают больше всего места:

Таблицы:
cs_stored_sessions
cs_sessions
cs_logs
можно очистить без вреда для магазинов? Или лучше не очищать?

Почему так много занимает таблица “cs_product_features_values” занимает так много места? У всех она первое место занимает? Заранее благодарен

Вы с какой версии начали CS-Cart использовать? Раньше там был баг, характеристики сохранялись некорректно и база так сильно разрасталась

Таблицы со 2 и 3 места можно почистить, если не нужны брошенные корзины и списки желайний

Спасибо за ответ.

Версия 4.5.2, вроде была первая. Последнее обновление было 4.7.2.

А как можно узнать нет ли этого бага у меня сейчас?

Таблицы со 2 и 3 места можно почистить
cs_sessions
cs_logs

имеете в виду?

А что хранится в cs_stored_sessions? Ее нельзя чистить?

Мы чистили, когда перевалила за 3ГБ.
После очистки проблем не было.

Рекомендуем предварительно протестировать конечно. :slight_smile:

Logs - это журнал, также чистится кнопкой очистить журнал из админки. Вообще настройте его, я оставил только авторизацию, и ошибки. Sessions - обе таблицы сохраненные данные сессий посетителей, просмотры, корзина, отложенные товары. Здесь очень много валилось у меня от ботов. Прямо всё я бы чистить не стал, но вот старые записи от неавторизованных посетителей, думаю очень даже можно

Вот моя база http://prntscr.com/k3ff5m

Спасибо всем за ответы. Буду подчищать :slight_smile:

Сейчас точно нет. Но при обновлении некорректно созданные данные могли не удалиться

Можно попробовать сделать экспорт товаров с характеристиками. Потом удалить все характеристики и сделать импорт. Только обязательно перед этим сделайте полный бэкап БД

Опять вернулась проблема…

Подскажите, пожалуйста, каким образом можно автоматически очищать старые данные в таблицах cs_stored_sessions и cs_sessions от неавторизованных посетителей?

Какую-то крон команду можно использовать для этого или как? Как именно определить что сохраненные в таблице в БД запись именно от неавторизованного посетителя?

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

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

Спасибо за быстрый ответ. Поделитесь, пожалуйста, скриптом для очистки. Или вы не чистите эту таблицу скриптом?

Не чистил, посмотрел, там сейчас 50000 записей. Насколько я помню через какое то время записи оттуда удаляются

У меня сейчас таблица cs_stored_sessions занимает 8,6 ГБ…

Вот и пытаюсь понять, почему так много она весит и как можно ее очищать… На сколько я знаю, то максимум две недели должны храниться данные в кеше…

Может кто-то может подсказать какую-то крон команду которая ежедневно будет запускаться и будет удалять из таблицы записи, которые старше 10 дней? Такое возможно?

Ну вообще (посмотрел у себя) там только company_id, время жизни, язык и валюта. Если у вас одна витрина, один язык и одна валюта на сайте, можно смело чистить под корень
вообще можно видимо вставить в admin.php между

    require(dirname(__FILE__) . '/init.php');

    fn_dispatch();

например так

    require(dirname(__FILE__) . '/init.php');
    db_query("DELETE FROM ?:stored_sessions WHERE expiry < ?i", TIME - SECONDS_IN_DAY*14);
    fn_dispatch();

таким образом удалятся записи старше 2-х недель
! не тестировал, но должно сработать. Однако я посмотрел, и вроде у меня все 50000 записей укладываются в этот промежуток.

Здравствуйте, скажите пожалуйста вы имеете ввиду Администрирование: Журнал Событий очистить? У нас перевалило за 6.000 очистил в ручную.

нет, я про cscart_stored_sessions

Спасибо. У меня несколько витрин, несколько языков и несколько валют… Тоже должно работать как вы написали и для нескольких витрин? Или это вариант только для одной витрины?

Было бы, конечно, хорошо получить ответ от разработчиков cs-cart… Наверняка они могли бы точно дать рабочий вариант, который могли бы использовать все кому нужно…

Не знаю к сожалению про что Вы ))
Но благодарю за ответ!

Ну почитали бы тему сначала, и знали бы… ))

Да, команда просто удаляет из таблицы записи с expiry старше 14 дней
Но все же лучше предварительно забэкапить таблицу
ну и потом закомментировать или удалить строку, чтобы она не отрабатывала постоянно