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

48 ответов

23 просмотра

Для меня да, всегда считал что транзакция это атомарная и неделимая операция записи в БД. А вовсе не единица некой работы, запрос на чтение обычно проходит вовсе без транзакций, тоже ведь некая единица работы с БД )

Alexander-Ermakov Автор вопроса
Дмитрий Алексеев
Для меня да, всегда считал что транзакция это атом...

Если используется пессимистическая блокировка, то только в транзакции и читать. Транзакция это атомарная и неделимая операция в бд. Слова про запись - лишние

Alexander-Ermakov Автор вопроса
Alexander Ermakov
Написано что именно?

Что я на запросы на чтение обязан наложить транзакцию если используется пессеместическая блокировка?

Alexander-Ermakov Автор вопроса
Дмитрий Алексеев
Что я на запросы на чтение обязан наложить транзак...

А как ты иначе запретишь читать другим подключениям?

Alexander Ermakov
А как ты иначе запретишь читать другим подключения...

Так блокировка то и запрещает, зачем мне транзакция на чтение?

Alexander-Ermakov Автор вопроса
Дмитрий Алексеев
Так блокировка то и запрещает, зачем мне транзакци...

Как ты технически заблокируешь строчки в бд на чтение без транзакции?

Alexander Ermakov
Как ты технически заблокируешь строчки в бд на чте...

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

Дмитрий Алексеев
Так видимо у нас не понимание, возьмем пример, ест...

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

Alexander-Ermakov Автор вопроса
Дмитрий Алексеев
Так видимо у нас не понимание, возьмем пример, ест...

>и есть другой совсем кейс который только читает, другая апишка какаято, там мне нафига транзакцию открывать? Если ты только читаешь, то причём тут пессимистическая блокировка?

Alexander Ermakov
>и есть другой совсем кейс который только читает, ...

Ну а как же, сервер же, один клиент пишет, другой читает, одна таблица на всех... Нет? Я к тому что если не предполагается писать, то и транзакция не нужна.

Alexander-Ermakov Автор вопроса
Дмитрий Алексеев
Ну а как же, сервер же, один клиент пишет, другой ...

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

Дмитрий Алексеев
Так видимо у нас не понимание, возьмем пример, ест...

Может для консистентности итогового результатата необходим уровень изоляции транзакций - повторяемое чтение

Pavel S
Может для консистентности итогового результатата н...

Так куда денется консистентность если никто не пишет?

Дмитрий Алексеев
Так куда денется консистентность если никто не пиш...

Паралельные юзеры могут успеть модифицировать данные в базе

Pavel S
Паралельные юзеры могут успеть модифицировать данн...

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

Дмитрий Алексеев
Ну так на их вызовах где идет модификация и нужно ...

Если они модифицируют, то понятно что в транзакции

Pavel S
Если они модифицируют, то понятно что в транзакции

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

Alexander-Ermakov Автор вопроса
Дмитрий Алексеев
Так мы о том и спорили тут, что если не предполога...

"Не всегда можно заранее знать, будешь ты писать или нет"

Дмитрий Алексеев
Так мы о том и спорили тут, что если не предполога...

Я ответил на вопрос - зачем нужна транзакция если модификаций не предполагается

Pavel S
Я ответил на вопрос - зачем нужна транзакция если ...

нет, не ответили, зачем читающим запросам ставить транзакцию если там нигде потом в коде нет ни одного запроса на запись?

Pavel S
Ответил - https://t.me/DotNetRuChat/1536640

Как читающие могут нарушить консистентность?

Pavel S
Не читающие, а читающим https://t.me/DotNetRuChat/...

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

Alexander-Ermakov Автор вопроса
Alexander Ermakov
Я это не писал

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

Дмитрий Алексеев
Но транзакция с блокировкой то ставится пишушими, ...

Я ответил на твой вопрос в каком случае такое нужно

Alexander Ermakov
Уже привёл

В вашем примере записывающий. зачем читающему открывать транзакцию? Простой же вопрос.

Pavel S
Что только при записи?

Транзакция имеет смысл к использованию

Alexander-Ermakov Автор вопроса
Дмитрий Алексеев
В вашем примере записывающий. зачем читающему откр...

Так если строки со значением 42 не будет, то и операции записи не будет

Дмитрий Алексеев
Транзакция имеет смысл к использованию

Ещё раз - если есть вероятность при выполнении серии читающих запросов что другой юзер успеет изменить данные которые могли быть использованы читателем, то возможна неконсистентность результата. Для избежания этого читающие запросы выполняют в транзакции с уровнем изоляции - повторяемое чтение

Alexander Ermakov
Так если строки со значением 42 не будет, то и опе...

У вас в коде есть запрос записи, это записывающий, завершится ли операция реальной записью, или упадет с исключением, или отвалится по условию не важно, важно что там в принципе есть запрос записи, об этом речь

Pavel S
Ещё раз - если есть вероятность при выполнении сер...

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

Alexander Ermakov
Это уже софистика пошла

Я вам приводил примеры.

Pavel S
Нет, уровень изоляции ставится транзакции

Ставится все верно, но его поставить пишуший, на кой его ставить читающим? я чего то не знаю?

Дмитрий Алексеев
Ставится все верно, но его поставить пишуший, на к...

Видимо, стоит почитать про уровни изоляции транзакций

Pavel S
Видимо, стоит почитать про уровни изоляции транзак...

Возможно. Пробегусь еще раз, мож упустил чего.

Pavel S
Видимо, стоит почитать про уровни изоляции транзак...

Глянул, да вспомнил всю эту катавасию, но это все касается только не блокированных данных, то есть имеет смысл только в том случае если пишущие не блокируют таблицы или записи. Но в целом все верно, в таком виде транзакции для чтения применимы. Запутал меня человек блокировкой.

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

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

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Всем привет!) я тут новенький и пытаюсь освоить evolution методом тыка. У меня при переходе между папками файлов выскакивают вот такие уведомления Можете подсказать как их от...
Диман Samoed
10
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Карта сайта