У меня очень большая таблица (десятки миллионов строк), и к столбцу этой таблицы необходимо добавить УНИКАЛЬНЫЙ индекс.Я точно знаю, что таблица содержит дублированные значения в этом ключе, которые мне нужно очистить (удаляя строки / сбрасывая значение столбца до чего-то уникального, которое я могу автоматически сгенерировать).Плюсом является то, что строки, которые уже дублированы, больше не изменяются.
Каков будет правильный подход для выполнения таких изменений, учитывая, что я, вероятно, буду использовать инструмент Percona pt-osc и тамтакое непрерывное удаление / вставка в таблицу?Мой план был:
- Добавить код, который гарантирует, что идентификаторы дубликатов больше не будут вставлены.Возможно, мне нужно временно добавить для этого отдельную таблицу, поскольку я хочу, чтобы база данных обеспечивала это для меня, а не для приложения, поэтому вставьте в «теневую таблицу» уникальный индекс в транзакции вместе с моей основной таблицей, откатите всевставки, которые пытаются вставить повторяющиеся значения
- Заново заполнить таблицу, задав все недопустимые значения столбцов, которые находятся в диапазоне первичного ключа ниже
$current_pkey_value
- Затем добавьте индекс и используйте pt-osc для переключениястол
Что-то мне не хватает?