Мы используем Golang и GORM для миграции ORM и схемы базы данных. Использование defautl AUtoMigrate удобно для добавления таблиц / столбцов / индексов, которые являются net новыми. Одна большая проблема с Postgres, в частности AWS AUrora Postgres, заключается в том, что кажется, что даже простой столбец добавления таблицы изменений без значений по умолчанию и без нулевых ограничений все еще создает полный доступ к AccessExclusiveLock. Это вызвало у нас простои в производстве, так как в противном случае это развертываемая инфраструктура в любое время с нулевым временем простоя.
Postgres утверждает, что это не приведет к блокировке, но думаю, что у Авроры есть некоторые магические движки innodb c, которые, вероятно, вызывают один, вероятно для непротиворечивости реплики чтения?
В любом случае, в нашем скрипте развертывания оболочки мы пытаемся выяснить, можем ли мы попросить GORM предоставить нам DDL, который он будет запускать, как предварительный просмотр, без его запуска. В любом случае, чтобы сделать это?