172 похожих чатов

Мозг, имеем Пг версии 11.5. Есть таблица на которой довольно

большая нагрузка. Оттуда удаляется колонка (колонка в запросах не используется). Размер базы распух в 2,5 раза где-то за пару минут (мы чуть не влетели в out of disk space), аварийно тормознули Пг, запустили заново размер базы вернулся в нормальное состояние.
Что это было? Почему так сильно распухла база? Что с этим делать?

Частично ответ я думаю что знаю: Пг, при удалении колонки на самом деле ее не удаляет, удаление происходит при SELECT'е судя по всему, но откуда в 2,5 раза-то? Тем более что база далеко не из одной этой таблицы состоит. Конкретные размеры базы и таблицы, если надо, приведу. Но все-таки вопросы остаются актуальными.

19 ответов

24 просмотра

Ну он потер ссылку на столбец, а потом видимо начал вакуум делать, чтобы данные из таблицы рядом на диске лежали

Warstone- Автор вопроса
Константин Коломейцев ☭
Ну он потер ссылку на столбец, а потом видимо нача...

Откуда 2,5 раза? (Для таблицы это не 2,5 это сильно больше)

Warstone
Откуда 2,5 раза? (Для таблицы это не 2,5 это сильн...

Тут уже из логов надо анализировать. Если было чисто удаление столбца без запуска руками вакуума и прочего, так не могло случиться. А столбец индексируемый был? Может ещё и в составном индексе? Были ссылки на него? Вариантов много, так с лету наверно никто не скажет

Warstone- Автор вопроса
Warstone
Вакуум не запускали. В индексах его небыло.

Тогда логи только. Я в 170гб таблице удалял столбцы, проблем не было

Автовакум пошел

Warstone- Автор вопроса
Даниил Агниашвили
В htop смотрели?

Смотрели. И запросы которые 10мс по 4 секунды выполнялись и диск задрачивали по страшному.

Warstone
Смотрели. И запросы которые 10мс по 4 секунды выпо...

по описанию похоже, что I/O был занят, значит можно предположить, что дефрагментация или типа того производилась

Warstone- Автор вопроса
Александр Костюченко
по описанию похоже, что I/O был занят, значит можн...

IO был забит Пг. дефрагментация на никсах - это что-то новенькое.

Warstone
IO был забит Пг. дефрагментация на никсах - это чт...

а причем тут Ось? Файловые системы подвержены фрагментации, может вы имели ввиду ssd/hard?

> Конкретные размеры базы и таблицы, если надо, приведу. Приведите (до и после, за счёт чего "размер базы распух в 2,5 раза"). Вы какую-то очень странную ситуацию описываете, на первый взгляд. > Пг, при удалении колонки на самом деле ее не удаляет На самом деле это metadata operation, т.е. она, по сути, почти ничего не делает и должна выполняться мгновенно (если ей удаётся получить lock) независимо от размера таблицы.

Warstone- Автор вопроса
Yaroslav Schekin
> Конкретные размеры базы и таблицы, если надо, пр...

=> SELECT pg_size_pretty( pg_total_relation_size('...') ); pg_size_pretty ---------------- 13 GB (1 row) => SELECT pg_size_pretty( pg_database_size('...') ); pg_size_pretty ---------------- 159 GB (1 row) В момент перед тушением базы общий размер был около 400Гб

Warstone
=> SELECT pg_size_pretty( pg_total_relation_size('...

А это "до" или "после"? И из этого неясно, за счёт чего база росла...

Warstone- Автор вопроса
Warstone
=> SELECT pg_size_pretty( pg_total_relation_size('...

> В момент перед тушением базы общий размер был около 400Гб Базы, полученный этим же запросом? А за счёт чего, не выявили (если нет — можно только гадать)?

Warstone- Автор вопроса
Yaroslav Schekin
> В момент перед тушением базы общий размер был ок...

Нет. Там мониторинг диска был. Сам запрос никто не думал тогда выполнять. Не до того было

Warstone
Нет. Там мониторинг диска был. Сам запрос никто не...

Может, он просто врёт? ;) Это же самое простое объяснение, на самом деле...

Warstone- Автор вопроса
Yaroslav Schekin
Может, он просто врёт? ;) Это же самое простое объ...

Ну он сейчас показывает те-же объемы. И нет... Там IO дикое было и задержки запросов. То есть не врал.

Похожие вопросы

Обсуждают сегодня

лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
#include <stdio.h> #include <stdlib.h> #include <time.h> int** generate_table(int size_matrix) { int** matrix = (int**)malloc(size_matrix * sizeof(int*)); for (int i ...
Чувак
1
Яндекс маршрутизатор кто-нибудь использовал с своих проектах, чтоб через него маршруты составить/посчитать? Насколько простой/муторный сервис?
Dreamer_0x01 VeseloV
7
У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
Дебил? Я ищу друга
Bitard 228
27
Карта сайта