LINUX.ORG.RU

Помогите оптимизировать скрипт

 ,


0

1

Сейчас в начале идет создание нового dump, потом на основе ранее созданной подписи идет создание delta

            nice -n 19 ionice -c3 pg_dump -d $DBNAME -h ${SERVERNAME} -p $PORT -U ${USERNAME} -w > ${TEMPDIR}/temp/${DBNAME}_$SUFFIX.dump
            if [[ $? -ne 0 ]]
            then
                echo "$DBNAME: pg_dump error code is "$? >> $ERRLOG
            fi
            SERIALNUM=$(echo "$STARTFILE" | sed 's/^.*'"${DBNAME}"'_//;s/_weekly.*//')
            /usr/bin/rdiff delta ${ARCHIVEDIR}/${DBNAME}/$STARTFILE.signature ${TEMPDIR}/temp/${DBNAME}_$SUFFIX.dump  ${ARCHIVEDIR}/${DBNAME}/${DBNAME}_${SERIALNUM}_${SUFFIX}.dump.delta
            if [[ $? -ne 0 ]]
            then
                echo "$DBNAME: delta creation error "$? >> $ERRLOG
            fi
            rm ${TEMPDIR}/temp/${DBNAME}_${SUFFIX}.dump

А как обойтись без промежуточного создания dump и направить этот вывод на создание delta



Последнее исправление: Shulman (всего исправлений: 1)

А как обойтись без промежуточного создания dump и направить этот вывод на создание delta

man rdiff:

In every case where a filename must be specified, - may be used instead to mean either standard input or standard output as appropriate.

Поэтому как-то так:

nice -n 19 \
  ionice -c3 \
  pg_dump -d $DBNAME -h ${SERVERNAME} -p $PORT -U ${USERNAME} -w | \
  /usr/bin/rdiff -- delta \
  ${ARCHIVEDIR}/${DBNAME}/$STARTFILE.signature \
  - \
  ${ARCHIVEDIR}/${DBNAME}/${DBNAME}_${SERIALNUM}_${SUFFIX}.dump.delta
anonymous
()

sed s/but/true/

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

tz4678 ★★
()
Последнее исправление: tz4678 (всего исправлений: 1)
Ответ на: комментарий от Shulman

Если дамп пишется в tmpfs, а памяти достаточно, чтобы не выгружать её на диск, то скорее всего нет. А если памяти недостаточно, то её и для скрипта недостаточно. Но на всякий случай лучше провести замеры времени, если оптимизация так важна.

aureliano15 ★★
()
Ответ на: комментарий от beastie

Не совсем в духе идеи, мне нужно чтобы в лог нападали ошибки, тогда скрипт пришлет сообщение, что они были, отправка сообщения в самом конце… поэтому так не получится, только сели скрипт делить на 2…

Shulman
() автор топика

В гит репу. И дамп делать по файлу на сущность бд, а не куском.

crutch_master ★★★★★
()

/temp/ как tmpfs примонтируй (то бишь оперативка) и будет тебе скорость, у тебя тут скрипта то по сути нет, просто данные туда сюда гоняешь. Поэтому оптимизируй не эмм скрипт, а эффективность работы с данными.

anonymous
()
Ответ на: комментарий от anonymous

Кстати так и было, но после того как я убрал работу с RAM, ситуация не сильно изменилась.

Shulman
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.