всем привет
подскажите, кто сталкивался может, как делали вы слайсы базы данных?
есть очень большая база больше 20ТБ, необходимо сделать срез, где-то 5%, чтобы сохранились все связи и ключи
Пока продумываю логику, но таблиц около 400+, и возможно будут дополнительные миграции с добавлением новых таблиц и данных, что-то универсальное необходимо реализовать.
база данных и система не описаны... тыкаем пальтцем в небо и предполоагаем вуиндовс и мс скуэл сервер...
попробуй остановить транзакции/выключить бд и сделать VSS копию папки с базой данных. а потом работать с копией или скопировать её на другой комп, потом тольк не забудь удалить снапшот.
таймаут бд будет очень мелкий....
Если важна скорость. То я-бы предложил такой вариант. Делай полностью клон БД.
Физически копируй. Потом выключай constraints. И удаляй те 95% данных которые надо удалить.
Справочники - не трогай. Они маленькие обычно и роли не играют в объеме.
После этого - включай констрейнты - и база готова. Возможно в процессе включения будет
ругань на связи между таблиц фактов. Там надо соотв. вручную подчистить.
P.S. Очень жаль что ты не указал тип DBMS. Там есть разные варианты. Экспорт. Бэкап. Горячий холодный.
Можно констрейнты не удалять, а вместо этого делать каскадное удаление, чтобы база сама вытерла связанные записи. Но это, конечно, будет базозависимое.
Но скорее всего автора волнует, что 20 Тб скопировать это такое себе удовольствие.
Я когда-то пробовал на продуктовой БД удалять через каскад. Устал ждать и потом получил ошибку снапшота.
Если там глубина связей больше 3-5 уровней то пакетное удаление не закончится никогда.