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

Кстати Коллеги, а можно нубский вопрос? а возможны вообще долгоживущие транзакции, хотя

бы в теории?

стартовал - получил id транзакции
делаешь что-то в ней
закоммитил, указав id

не привязанные к коннекту?

18 ответов

26 просмотров

Транзакция всегда в коннекте существует, иначе никак. А долгоживущая может быть, но такие подходы бьют по перформанса

doc
Транзакция всегда в коннекте существует, иначе ник...

Если-бы вы были хоть на секунду правы, то в pg_stat_activity (или как оно там) на всех коннектах, которые сейчас не делают ничего было-бы idle in transaction и база умерла-бы (так как idle in transaction это самое плохое что может быть для Пг).

Two phase commit ближе всего по смыслу, но он не для того.

а это разве не сломает ACID?

А как тогда гарантировать СУБД что вы не начнете параллельно кучей потоков что-то с одним id делать с недетерминированным конечным результатом? Тут тогда придется транзакции внутри транзакции пилить.

Пока что ваше пожелание ничем ни отличается от "стартовал — открыл соединение + открыл транзакцию, висишь idle in transaction, закоммитил и закрыл соединение". В чём будет положительная разница для пользователя? P.S. Если вы скажете "не надо открывать соединение", то я попрошу расписать плюсы этого и т.д. пока не скажете очень конкретные плюсы

alex che
Пока что ваше пожелание ничем ни отличается от "ст...

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

Евгений Смирнов
Что-то подобное на первый, наивный, взгляд хорошо ...

почему для сервера банка проблема держать соединение одну минуту?

Да, можно, это даже на практике делают. Почитайте про saga.

Евгений Смирнов
Что-то подобное на первый, наивный, взгляд хорошо ...

"Разрешэние" выдать деньги (блокировка средств на счёте) должна быть отдельной транзакцыей, фиксацыя выдачи или отмены — тожэ. И да, у этого разрешэния надо, конечно, пркдусмотреть средства синхронизацыи с цэнтром: откат тех, которые нк дошли так или иначе (в т.ч. не дошло разрешэние), накат тех, у которых после успешного разрешэния не дошло подтверждение выдачи.

Ilya Anfimov
"Разрешэние" выдать деньги (блокировка средств на ...

Именно, куча мелких транзакций + журнал всего произошедшего.

doc
а в чем я не прав-то?

Я там и написал.

Warstone
Я там и написал.

я прочитал, но не понял в чем конкретно я не прав

doc
я прочитал, но не понял в чем конкретно я не прав

В фразе что "транзакции всегда в коннекте существуют". Это неправда.

Евгений Смирнов
Что-то подобное на первый, наивный, взгляд хорошо ...

Вы ответили на вопрос "зачем это нужно?", а я спрашивал "какое конкретно преимущество вы ожидаете по сравнению с открыть отдельное соединение для длительной транзакции?". Вам может быть очевидно, а мне не очевидно. Это нужно для ответа на исходный вопрос "можно ли такое поддержать в PG?". Чтобы на него ответить, нужно знать не название фичи, а какие плюсы ожидаются. Например, "мультимастер" — это просто слово, можно реализовать формально "мультимастер", при этом пользователь не получит плюшек, которые на самом деле хотел.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта