powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Уменьшить таблицу после удаления колонок
9 сообщений из 9, страница 1 из 1
Уменьшить таблицу после удаления колонок
    #38780790
Artemiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица 40 гб. Удалили 6 строковых колонок, ожидаем уменьшения размера.
Прогнали компактор, толку нет, он ничего не делает. Как уменьшить без фулл вакуума и пересоздания?

На реплике сделали фулл вакуум, стало 30 гб.
...
Рейтинг: 0 / 0
Уменьшить таблицу после удаления колонок
    #38780830
Лопата
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtemiyЕсть таблица 40 гб. Удалили 6 строковых колонок, ожидаем уменьшения размера.
Прогнали компактор, толку нет, он ничего не делает. Как уменьшить без фулл вакуума и пересоздания?

На реплике сделали фулл вакуум, стало 30 гб.
бугага

"дроп колумн" в пж помечает колонку как дропнутую, и скрывает от вас. с данными там ничего не происходит. Если вы попробуете насильно SET NULL -- за счет версий еще и в моменте подрастет. Так что только полный вакуум, только хардкор.

РТФМThe DROP COLUMN form does not physically remove the column, but simply makes it invisible to SQL operations. Subsequent insert and update operations in the table will store a null value for the column. Thus, dropping a column is quick but it will not immediately reduce the on-disk size of your table, as the space occupied by the dropped column is not reclaimed. The space will be reclaimed over time as existing rows are updated. (These statements do not apply when dropping the system oid column; that is done with an immediate rewrite.)

To force an immediate rewrite of the table, you can use VACUUM FULL, CLUSTER or one of the forms of ALTER TABLE that forces a rewrite. This results in no semantically-visible change in the table, but gets rid of no-longer-useful data.

помню времена, когда даже пресловутый инвизибле сбоил
...
Рейтинг: 0 / 0
Уменьшить таблицу после удаления колонок
    #38780909
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtemiyЕсть таблица 40 гб. Удалили 6 строковых колонок, ожидаем уменьшения размера.
Прогнали компактор, толку нет, он ничего не делает. Как уменьшить без фулл вакуума и пересоздания?

На реплике сделали фулл вакуум, стало 30 гб.

ну если совсем уж любой ценой извратиться то
1)обновить принудительно руками все строки (блоками по 1000-10000 строк) чтобы пустые поля в NULL превратились
2)прогнать компактор по таблице с --reindex --force

ну или блокирующий vacuum full или cluster.
...
Рейтинг: 0 / 0
Уменьшить таблицу после удаления колонок
    #38781035
Artemiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk,

А компактор разве сам не переписывает таблицу?
...
Рейтинг: 0 / 0
Уменьшить таблицу после удаления колонок
    #38781096
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtemiyMaxim Boguk,

А компактор разве сам не переписывает таблицу?

нет (точнее не совсем и в вашем конкретном случае он ничего сделать не может).
...
Рейтинг: 0 / 0
Уменьшить таблицу после удаления колонок
    #38781773
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim BogukArtemiyЕсть таблица 40 гб. Удалили 6 строковых колонок, ожидаем уменьшения размера.
Прогнали компактор, толку нет, он ничего не делает. Как уменьшить без фулл вакуума и пересоздания?

На реплике сделали фулл вакуум, стало 30 гб.

ну если совсем уж любой ценой извратиться то
1)обновить принудительно руками все строки (блоками по 1000-10000 строк) чтобы пустые поля в NULL превратились
2)прогнать компактор по таблице с --reindex --force

ну или блокирующий vacuum full или cluster.
а если обновить всю удаляему колонку в null перед дропом? поможет?
...
Рейтинг: 0 / 0
Уменьшить таблицу после удаления колонок
    #38781788
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan DurakMaxim Bogukпропущено...


ну если совсем уж любой ценой извратиться то
1)обновить принудительно руками все строки (блоками по 1000-10000 строк) чтобы пустые поля в NULL превратились
2)прогнать компактор по таблице с --reindex --force

ну или блокирующий vacuum full или cluster.
а если обновить всю удаляему колонку в null перед дропом? поможет?

если обновить в null а потом пройтись компактором - да поможет
...
Рейтинг: 0 / 0
Уменьшить таблицу после удаления колонок
    #38783605
Artemiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можете в кратце пояснить механизм работы компактора. Я считал что он апдейтами переписывает всю таблицу на новое место, как бы дефрагментируя ее, позволяя обычному вакууму собрать мусор, нет?
...
Рейтинг: 0 / 0
Уменьшить таблицу после удаления колонок
    #38783627
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtemiyМожете в кратце пояснить механизм работы компактора. Я считал что он апдейтами переписывает всю таблицу на новое место, как бы дефрагментируя ее, позволяя обычному вакууму собрать мусор, нет?

он переписывает не на новое место а на свободное место внутри этой же таблицы...
в случае удаленных колонок свободного места в таблице формально нет (так как удаленны колонки на самом деле где были там и остались только для sql запросов не видны) и компактор ничего сделать с этим не может.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Уменьшить таблицу после удаления колонок
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]