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

Привет всем. А транзакции используются обычно при изменении или добавлении

данных? Т.е. при чтении не обязательно реализовывать?

9 ответов

33 просмотра

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

Они используются сервером абсолютно всегда.

Давайте попробую объяснить про чтения. Транзакция — это когда несколько операций делается атомарно. Если что-то делается неатомарно, значит оно просто состоит из более мелких частей, каждая из которых делается атомарно, т.е. это не транзакция, а 10 более мелких транзакций. Например, вы читаете 1 целое число. Если у вас есть гарантия, что вы прочитали число, которое в какой-то момент существовало в базе данных, значит вы прочитали это число в транзакции, и уровень изоляции был не ниже READ COMMITTED. А могло быть, например, так, что вы прочитали половину числа старую, а половину новую, и получилии гибрид, который никогда не существовал...

Почитай про уровни изоляции транзакций и какие проблемы они решают

alex che
Давайте попробую объяснить про чтения. Транзакция ...

Тоже так считал. Но почему pg_current_xact_id_if_assigned() вернёт ничего, если не было запросов, меняющих данные?

Gennady K
Тоже так считал. Но почему pg_current_xact_id_if_...

Такая транзакция считается виртуальной. https://edu.postgrespro.ru/postgresql_internals-14.pdf С. 91 и дальше

Gennady K
Тоже так считал. Но почему pg_current_xact_id_if_...

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

Gennady K
Тоже так считал. Но почему pg_current_xact_id_if_...

И да, то, что у вас нет transaction_id — не означает, что нет транзакцыи.

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

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

У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
Всем привет. Сейчас я изучаю erlang по книге Erlang and OTP in action. Дошел до главы где реализуется первый gen server на примере tcp rpc сервера. Меня очень сильно смутил ко...
Freezing Death
10
что за асемблер кста?
Shvabrikk Nya
19
Добрый день! Пробую отловить исключение EConvertError: function _TryTextToDouble(var DoubleVar: Extended; Text: String): Boolean; begin try DoubleVar := StrToFloat...
Kirill Filippenok
19
всем привет. реально ли понять чем в процессе занята память? delphi/linux, процесс свой
Handatros
12
Подскажите... Есть ли название у способа разработки кода, в котором: сперва пишут минимальную рабочую структуру: Напр. ввод, обработка, вывод, контроль. Потом эту структуру д...
Budemposmotret
6
В дизассемблере вижу, что строки пихают в регистры через lea, почему так, а не через mov?
Oleg
8
А где @Grinyaha уважаемый пропал?
Am Ambrion
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Сделал краткий обзор магазина из статьи и заодно там же записал инструкцию по развёртыванию. https://www.youtube.com/watch?v=8-sE1vNk95Q (чё думаете по звуку? кое-что поменял...
Andrey K
17
Карта сайта