Идеальный способ изменить таблицу, чтобы она имела минимальное время блокировки - PullRequest
0 голосов
/ 19 февраля 2020

Я использую PostgreSQL 9.1. У меня есть столбец со строковым типом данных (varchar (255)).

Мой первоначальный подход состоял в том, чтобы изменить тип данных со строки на текст. но, как упоминалось в этой статье, https://www.endpoint.com/blog/2012/11/09/postgres-alter-column-problems-and изменение типа данных столбца вызывает перезапись всей таблицы. и база данных оставалась заблокированной для чтения и записи, пока происходит операция

Старший разработчик предложил мне этот подход. Создайте новый столбец с типом данных text. эта операция имеет очень минимальное время блокировки. Теперь инициализируйте новый столбец старым столбцом. Он имеет блокировку только строки. Он блокирует единственную строку в списке для обновления. Теперь удалите старый столбец. Это очень быстро и имеет минимальное время для блокировки.

Я сомневаюсь, почему первая операция вызывает перезапись всей таблицы? и чем он отличается от второго подхода?

...