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

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

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

9 ответов

18 просмотров

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

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

Давайте попробую объяснить про чтения. Транзакция — это когда несколько операций делается атомарно. Если что-то делается неатомарно, значит оно просто состоит из более мелких частей, каждая из которых делается атомарно, т.е. это не транзакция, а 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 — не означает, что нет транзакцыи.

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
70
Здравствуйте. Задача состоит в том, чтобы сделать real-time чат в мобильном приложении. После передачи сообщения пользователем через веб-сокеты, для основного и долговременног...
🐾
5
Всем доброго дня, ребят подскажите пожалуйста, если в курсе по ассемблеру используется MASM32, могу ли я использовать FASM? В чем явная разница и будет ли у меня все работать?
Botsman
17
падает джоба хотя уже была собрана на соседнем namespace, куда капать? │ │ Copying blob sha256:2fa066caddb8f09a71082b03aa43046f79346a01d9c89e06a1f508bb1207dba5 427 │ │ Copyin...
Andrei St
1
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
25
Книга Юрова В.И пойдёт для обучения?
Botsman
24
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Люди добрые, помогите с идеями, потому что свои закончились. У клиента падает софтина в момент инициализации модуля OtlEventMonitor на RegisterWindowMessage('Gp/OtlTaskEvents/...
Михаил Усков
7
Тут просто дело в том, что я не могу сейчас дать такие подробности из за того что рассчитать это всё нереально. Этого проекта который я хочу сделать ещё даже не существует) И ...
🐾
8
> Примечательно, что новый владелец удаляет из GitHub любые жалобы, указывающие на подозрительную активность или смену владельца, и, видимо, рассчитывает на то, что пользовате...
Alex Sherbakov
2
Карта сайта