Mam około 84 milionów wierszy. Wszystkie z nich należy przenieść do osobnej bazy danych na tym samym serwerze, a następnie usuwam, aby usunąć około 60 milionów wierszy ze źródłowej bazy danych.
84 miliony wierszy znajduje się w tej samej tabeli. Sama ta tabela stanowi 90% całej bazy danych.
Więc ... Źródło: 84 miliony wierszy -> 24 miliony wierszy Miejsce docelowe: 0 rzędów -> 84 miliony wierszy
Źródło działa w trybie pełnego odzyskiwania, miejsce docelowe będzie działać prosto.
Zastanawiam się, jaki byłby najbardziej efektywny sposób to zrobić?
Plan A:
1) INSERT INTO destination SELECT * FROM source
2) Źródło TRUNCATE
3) INSERT INTO source SELECT * FROM destination WHERE keep_condition = 1
Plan B:
1) Przywróć kopię zapasową źródłowej bazy danych jako docelowej bazy danych
2) Usuń wszystkie tabele oprócz potrzebnych w docelowej bazie danych
3) Źródło TRUNCATE
4) INSERT INTO source SELECT * FROM destination WHERE keep_condition = 1
Plan C:
1) INSERT INTO destination SELECT * FROM source
2) USUŃ źródło GDZIE keep_condition = 0
albo coś innego?
Dzięki