дядьки. если бы вам пришлось поменять int на bigint у колонки в таблице с 400кк строками как бы вы поступили? как обычно надо быстро и бесплатно для лога.
я добавляю новую колонку, заполняю ее, дропаю ключи, переименовываю колонки, удаляю старую, возвращаю ключи. но все работает ппц как долго) есть варианты исчо?)
Есть вариан платный по месту на диске =)
У нас была таблица с 20кк, но оч тяжелая, было поле max. И таблица весела 1-2 Тб.
Нужно было уникальное поле добавить / сжать.
Основная идея работа порциями.
Какое время простоя у тебя?
В твоем случае я бы сделал таблицу рядом с правильным индексом(я бы еще и секционирование сделал мб) туда бы я переливал данные по чуть-чуть итерационно(в момент вставки я бы и делал преобразования нужные), и проверял бы на каждом шаге, что лог не переполнился.
По завершению процесса, когда не перелитых данных останется мало - делаешь транзакцию с блокировкой основной таблицы и переливаешь остаток в новую. Переименовываешь. Комитишь.
Проблему с логом бы я решал - либо чек поинтами либо бекапированием периодическим.
Те у тебя будет долгий трансфер данных. И нужно место на 440кк.
Но зато простой небольшой. Минимальный.
Если есть вариант простоя, а места мало , то я бы вместо трансфера делал делит порциями (естественно фильтры по кластерному индексу) и из делита сразу вставку новую