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

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

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

20 ответов

6 просмотров

Вроде да.

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>

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

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

А чем вам питонисты не угодили?😂
.
79
Привет, запускаю werf в dind в k8s, получаю ошибку на этапе build/beforeSetup: /.werf/stapel/embedded/bin/bash: /.werf/scripts/5898bdfe5214357d3706b879cc8d3d78460fb379607cbd...
florius0
4
Dim Dim, [02.07.2024 11:07] DB 0x62 Dim Dim, [02.07.2024 11:07] DB 0x66 Dim Dim, [02.07.2024 11:07] кто пояснит что это?
Dim Dim
14
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Кстати, я тут еще с одной темой столкнулся, вот учу я C++, на таком то ресурсе, а остальные постоянно советуют практиковаться, что то писать, проекты, но как писать если вот т...
aaswq1
7
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Подскажите, можно ведь комбинировать запись данных в один и тот же Stream через TFileStream и через TCompressionStream поочерёдно? Ну т.е. часть данных мне нужно сжать, часть ...
notme
4
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Ребят, кто сталкивался с тем, что Electron.js не разворачивает билд React.js-приложения? Голый body в чёрном цвете, как и должно быть, но остального - нет. Билд работает исп...
..
6
Карта сайта