Zmiana typu danych bez blokady: nowa kolumna zamiast ALTER COLUMN
Zmiana typu danych bez blokady: nowa kolumna zamiast ALTER COLUMN
ALTER COLUMN wygląda niewinnie, dopóki tabela nie ma setek milionów rekordów.
Zmiana typu może wymagać przebudowy danych, indeksów i zależności.
Przykład
Chcemy przejść z:
| |
na:
| |
Etap 1 — nowa kolumna
| |
Etap 2 — walidacja konwersji
| |
Najpierw poznaj rekordy, których nie da się przenieść.
Etap 3 — backfill partiami
| |
Etap 4 — dual-write
Nowa wersja aplikacji zapisuje obie reprezentacje albo jedną i synchronizuje drugą.
Etap 5 — przełącz odczyt
Po walidacji nowa kolumna staje się źródłem odczytu.
Indeksy
Nie zapominaj, że indeksy zależne od starej kolumny trzeba zaplanować osobno.
Możesz przygotować nowy indeks jeszcze przed przełączeniem:
| |
Contract
Stara kolumna znika dopiero wtedy, gdy:
- wszystkie odczyty używają nowej,
- wszystkie zapisy używają nowej,
- integracje zostały przełączone,
- dane są zweryfikowane,
- rollback nie wymaga starej reprezentacji.
Podsumowanie
Zmiana typu danych nie musi być jedną operacją DDL.
Nowa kolumna, backfill, walidacja i przełączenie dają znacznie większą kontrolę nad ryzykiem.