Типичный программист | IT, программирование, разработка, ИИ
IT и технологии · 14 сентября 2026 г.
Одно новое значение статуса заказа переписало всю таблицу, а расплачивались за это годами
Одно новое значение статуса заказа переписало всю таблицу, а расплачивались за это годами Правка в спецификации на одно слово: добавить статус partially_refunded рядом с refunded, а не в конец, потому что список читают по порядку. В MySQL члены enum хранятся по позиции, и вставка в середину перенумеровывает соседей: вместо правки метаданных база копирует таблицу целиком, с блокировкой и запасом диска в размер самой таблицы. Дороже обходится вывод, который делают наутро: выкинуть enum и хранить tinyint с картой кодов в приложении. В базе лежит 3, и что это partially_refunded, знает только код: в консоли, в аналитике и в дампе значение читать нечем. Антон Бриллиантов разбирает, чем на это отвечает Postgres и где ограничения уже у постгресовых enum. #postgresql #sql