Проблема клиента и задачи
На момент обращения к нам в интернет-магазине клиента накопилось более 150 тысяч завершенных заказов. Все они продолжали храниться в базе данных. При формировании списка заказов базе данных приходилось извлекать большой массив информации, что затрудняло работу с административной частью интернет-магазина и нагружало сервер. А когда администратор осуществлял поиск по списку заказов — система зависала окончательно и выдавала ошибку. Работа администратора была парализована.

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

Чтобы автоматизировать архивацию заказов, мы разработали следующую функциональность: когда заказу исполняется, например, 1 год (или другое произвольное время, заданное администратором), все данные о заказе переносятся в архивную таблицу и освобождают место для активных заказов. Действие осуществляется по заданному расписанию с помощью CRON.
Специальный скрипт проверяет, корректно ли перенесены все свойства заказа в архивные таблицы. Если ошибок нет — заказ удаляется из основной таблицы. Эта проверка позволяет исключить потерю данных при архивации.
Если необходимо отключить архивацию для некоторых заказов, это можно сделать в ручном режиме через редактирование заказа.

Добавлены пользовательские поля в поиск по заказам. Теперь заказы можно искать не только по статусу, но и номеру телефона покупателя, стране, НДС и т.д.

Результаты работ
- Интернет-магазин может принимать еще больше заказов без потери скорости: загрузка списка заказов происходит за 0,005 секунд.
- Отлажена работа административной части: удобное и быстрое управление заказами.
- Исключена потеря данных при архивации благодаря специальному скрипту.
Проблема клиента и задачи
На момент обращения к нам в интернет-магазине клиента накопилось более 150 тысяч завершенных заказов. Все они продолжали храниться в базе данных. При формировании списка заказов базе данных приходилось извлекать большой массив информации, что затрудняло работу с административной частью интернет-магазина и нагружало сервер. А когда администратор осуществлял поиск по списку заказов — система зависала окончательно и выдавала ошибку. Работа администратора была парализована.

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

Чтобы автоматизировать архивацию заказов, мы разработали следующую функциональность: когда заказу исполняется, например, 1 год (или другое произвольное время, заданное администратором), все данные о заказе переносятся в архивную таблицу и освобождают место для активных заказов. Действие осуществляется по заданному расписанию с помощью CRON.
Специальный скрипт проверяет, корректно ли перенесены все свойства заказа в архивные таблицы. Если ошибок нет — заказ удаляется из основной таблицы. Эта проверка позволяет исключить потерю данных при архивации.
Если необходимо отключить архивацию для некоторых заказов, это можно сделать в ручном режиме через редактирование заказа.

Добавлены пользовательские поля в поиск по заказам. Теперь заказы можно искать не только по статусу, но и номеру телефона покупателя, стране, НДС и т.д.

Результаты работ
- Интернет-магазин может принимать еще больше заказов без потери скорости: загрузка списка заказов происходит за 0,005 секунд.
- Отлажена работа административной части: удобное и быстрое управление заказами.
- Исключена потеря данных при архивации благодаря специальному скрипту.