Новое ТЗ — предоставлен сайт с временем открытия «морды» 10 секунд (в не авторизованном режиме).
В рамках этого ТЗ подразумеваю будет не один пост 🙂
Что понравилось — лицензия активна и актуальна, а движек не обновлялся с 2012года 🙂
Конечно же, первое — решил обновиться до актуальной версии и создавая бэкап обратил внимание на очень большой размер БД.
Посмотрел phpmyadmin-ом и обратил внимание на 3 таблички с размерами более 200мб — в одной из них более 5.3 миллионов записей!
Поиск по запросу b_sale_fuser дал релевантные результаты
http://dev.1c-bitrix.ru/community/webdev/user/10337/blog/2323/
http://dev.1c-bitrix.ru/community/webdev/user/10337/blog/11317/
http://dev.1c-bitrix.ru/community/webdev/user/10337/blog/11202/
http://dev.1c-bitrix.ru/support/forum/forum6/topic50942/
http://marketplace.1c-bitrix.ru/solutions/alexkova.fileinspector/
В итоге пришел к выводу, что как раз из-за косяка в старом движке (господа — не экономьте на обновлениях!) эта проблема и всплыла.
Поставил инпектора — запустил очистку, процесс ОЧЕНЬ долгий — похоже на весь день 🙁
По хорошему кильнуть бы это всё не API Битрикса, а напрямую MySQL запросом — было бы быстрее в несколько порядков, но тут конечно риск накосопорить с базой …
P.S. ТАК НЕ ДЕЛАТЬ !!!! (инфа добавлена после этих удаление и восстановления БД — вся информация детальная о заказах тоже грохнулась, хотя странно)
В общем ждал я ждал, ждал, ждал, ждал и очень мне это всё надоело — в час по чайной ложке 🙁
Проанализировал структуру таблиц и вот решение по чистке корзин на утро сегодняшнего дня (всё что ДО — долой)
-- чистим b_sale_fuser по дате
DELETE b_sale_fuser
WHERE DATE_INSERT
< '2016-01-28 00:00:00'
-- Запоминаем максимальный ID (пригодится ниже для удаления b_sale_basket_props ) в моём случае результат 720251 все айдишники ниже были созданы раньше - убить их
SELECT max(ID) FROM b_sale_basket
WHERE DATE_INSERT
< '2016-01-28 00:00:00'
-- Чистим саму b_sale_basket
DELETE b_sale_basket WHERE
DATE_INSERT < '2016-01-28 00:00:00'
-- Чистим b_sale_basket_props с помощью найденного выше ID
DELETE
b_sale_basket_props WHERE
BASKET_ID` <= 720251
P.S.S.
В итоге поставил удаление Инспектором, торопиться не будем 🙂
И настроил запуск агента CSaleUser::DeleteOldAgent(30, 0); 10800 сек (раз в 3 часа)
Ещё контролируем Сохранять корзину (дней) - она тут Настройки > Настройки продукта > Настройки модулей > Интернет-магазин