Большая БД, лучше разместить данные в другой базе или таблице?
Большая БД MYSQL 8, innodb (более 50 гигов), есть данные, которые не так часто используются (прошлые года) лучше разместить устаревшие данные данные в другой базе или таблице?
Конечно важно иметь к ним доступ из приложения, а не просто как некий абстрактный архив.
Я не специалист именно в MySQL. Но из опыта использования других систем скажу что если вы выросли до таких размеров как десятки гигабайт - то вы рано или поздно приходите к физическому разделению данных на оперативные и исторические. Это может происходить по разному. В некоторых БД данные вообще сливают в внешние системы. В аналитические хранилища для OLAP. В бигдату.
В принципе вы можете просто создать 2 таблицы с одинаковой шапкой и рассматривать их как оперативные и историю. Но при запросах вы будете каждый раз делать UNION ALL чтоб посмотреть в обе. Это неудобно. Поэтому и возник partitioning. Но тут еще более интересный вопрос. А будет ли быстрее поиск если таблица - партицирована по дате например услуги ли платежа и мы точно-точно знаем что эта дата - оперативная. На этот вопрос я сходу не отвечу. Это детали реализации таких таблиц и оптимизатора в MYSQL. И поэтому вам надо просто это смоделировать и посмотреть. И на этой модели - откатать максимальное число разных запросов. Следя чтоб перформанс старых не упал сильно. Потому что partitioning для одних видов запросов хорош (аналитика) а для других - может вызывать больше лишних IOPS. Тут наперед никто не знает. Поэтому пробуйте партишенинг и смотрите стало лучше или хуже.
облегчение обслуживания (резервное копирование) - это лучшая причина разделения данных на архивную (тут главное что read only) и оперативную
Для этого буквально по базам данных разносить не обязательно, просто отдельные таблицы под данные и персональные настройки резервного копирования (просто разнеся по базам будет чуть сложнее работать и есть накладные расходы на процессор)
Akina, попробовал, но Mysql не позволяет это сделать так как в таблице есть внешний ключ, ну а собственно куда сейчас без них, от внешнего ключа не хотелось бы отказываться, чтобы не переписывать логику удаления.
Тут - невозможно ответить лучше или хуже. Если в базе нет проблем от ее
размера - то пускай себе исторические данные лежит в основной базе.
Если трудно делать backup - то можно поместить в другую БД. Но тогда нужно придумать
новое техническое задание на поиск в друх базах сразу.
Если просто медленно работает поиск - то можно сделать partitioning по периодам (годы, кварталы или месяцы)
и попросить программистов сделать настройку запросов с учотом partitioning.