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

Ну и как я понял, если у обновляемое поле данных

есть в индексе, то hot update не светит вообще ?

20 ответов

12 просмотров

Вроде да.

Pavel-Nikiforov Автор вопроса
Ilya Anfimov
Вроде да.

и решить вопрос с раздуванием базы можно только vacuum full ? просто оно тоже добавит как iops, так и износ ssd диска, ну и блокировки таблицы...

Pavel-Nikiforov Автор вопроса
Ilya Anfimov
От блокировок есть pg_repack...

оно есть программа и хочет админских привилегий. я хочу запускать "трамбовку" данных из софта, когда софту это удобно.

Pavel-Nikiforov Автор вопроса
Ilya Anfimov
Сделайте хранимку, делов-то.

как мне из хранимки запустить (execv) /usr/local/bin/pg_repack ? тем более, что оно еще и пароль просит с stdin (поправимо, конечно).

Pavel-Nikiforov Автор вопроса
Ilya Anfimov
Сделайте хранимку, делов-то.

ну и вопрос, а как этот pg_repack будет работать, когда есть репликация ? я так и не понял, он сам в файлы лазит или через сам сервер только команды дает ? тогда почему он экзешник, а не хранимка сам ? https://github.com/reorg/pg_repack/issues/196 - пишут, что оно хранимкой быть не может.

Pavel Nikiforov
как мне из хранимки запустить (execv) /usr/local/b...

Либо через copy to |, либо через любой unsafe pl. Пароль скорее всего не будет просить, поскольку на юзера postgres обычно стоит аутэнтификацыя peer. Команды даёт через сервер.

Pavel-Nikiforov Автор вопроса
Ilya Anfimov
Либо через copy to |, либо через любой unsafe pl. ...

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

Pavel-Nikiforov Автор вопроса
Ilya Anfimov
Либо через copy to |, либо через любой unsafe pl. ...

а вы это делали или это только теория ? так как если запускать подобным образом через copy, то оно ждет пока завершится сама транзакция с COPY . & - не помогает - там sh , который запускает postgres ждет зомби процесс. но, даже если написать на сях "форкалку", которая будет делать fork() и waitpid() то все равно COPY завершится раньше, чем pg_repack, что не очень то желательно, так как надо хотя бы знать, что оно отработало.

Pavel Nikiforov
а вы это делали или это только теория ? так как ес...

делал. через. COPY давал на вход sed-скрипту данные о новом пользователе, который менял/добавлял баунсеровский userlist.txt. вы вывод COPY даёте на вход подпроцессу, естественно, что мы будем ждать окончания подпроцесса.

Pavel-Nikiforov Автор вопроса
Виктор Егоров
делал. через. COPY давал на вход sed-скрипту данны...

ну так pg_repack будет ждать пока завершится COPY, который ждет пока завершится pg_repack.

Pavel Nikiforov
ну так pg_repack будет ждать пока завершится COPY,...

Весело. Я бы запускал через COPY TO PROGRAM nohup & , выводил вывод в файл, потом читал его через COPY FROM если хочется результата. Но так, конечно, дажэ проще. ЗЫ Хотя кому я вру? Не было бы у меня необходимости ЭТО делать через хранимку. Всё равно обвязка какая-то есть от интэрфейса пользователя до базы, вот обвязка бы и пинала pg_repack.

Pavel-Nikiforov Автор вопроса
Ilya Anfimov
Весело. Я бы запускал через COPY TO PROGRAM nohup...

если nohup и & , то будет зомбак, так как bash/sh не делает waitpid(pid, WNOHANG) после fork() и будет висеть как зомби пока не завершится форк . А пока оно висит, pg_repack ждет завершения текущих транзакций, в том числе и COPY которая ждет пока отработает pg_repack. Как то так.

Pavel Nikiforov
если nohup и & , то будет зомбак, так как bash/sh ...

Я, кстати, непонимаю о чём вы и с чего это взяли. никакого зомби там быть не должно, поскольку родительский процэсс /bin/sh быстро завершается -- и сам этот pg_repack переприсоединяется к init. Который делает waitpid(). COPY (SELECT 1) TO PROGRAM 'sleep 50 &'; завершается мгновенно, в pg_locks ничего не остаётся.

Pavel-Nikiforov Автор вопроса
Ilya Anfimov
Я, кстати, непонимаю о чём вы и с чего это взяли. ...

а я хочу еще и дождаться окончания выполнения pg_repack, а так оно сразу отваливается.

Pavel Nikiforov
а я хочу еще и дождаться окончания выполнения pg_r...

Ну, вот я бы сложыл результат в лог, а потом ужэ мониторил этот лог как-то поллингом.

Pavel-Nikiforov Автор вопроса
Ilya Anfimov
Ну, вот я бы сложыл результат в лог, а потом ужэ м...

ну это костыль. я хотел create temporary table repack (str text not null default ''); потом copy repack (str) from program '/usr/local/bin/pg_repack -d .... &'; но оно клинит: 280596 ? Ss 0:00 \_ postgres: 13/main: postgres xxx [local] COPY 282483 ? Z 0:00 | \_ [sh] <defunct>

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта