powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Одновременное выполнение транзакций с разными уровнями изоляции.
13 сообщений из 13, страница 1 из 1
Одновременное выполнение транзакций с разными уровнями изоляции.
    #37601547
Интересует одновременное выполнение транзакций с разными уровнями изоляции.
Если одну транзакцию выполнить с уровнем изоляции ReadCommited, а другую одновременно с первой с уровнем изоляции Serializable, то с каким уровнем каждая из них выполниться.
Т.е. что происходит когда одна транзакция запускается с одним уровнем изоляции, а другая после изменения уровня, но их выполнение пересекается?
...
Рейтинг: 0 / 0
Одновременное выполнение транзакций с разными уровнями изоляции.
    #37601563
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Одновременное выполнениеИнтересует одновременное выполнение транзакций с разными уровнями изоляции.
Если одну транзакцию выполнить с уровнем изоляции ReadCommited, а другую одновременно с первой с уровнем изоляции Serializable, то с каким уровнем каждая из них выполниться.
Т.е. что происходит когда одна транзакция запускается с одним уровнем изоляции, а другая после изменения уровня, но их выполнение пересекается?
в промышленных субд каждая со своим. транзакции могут натыкаться на блокировки друг друга, что задержит выполнение, но выполняться будет каждая со своим уровнем
...
Рейтинг: 0 / 0
Одновременное выполнение транзакций с разными уровнями изоляции.
    #37601580
Yo.!Одновременное выполнениеИнтересует одновременное выполнение транзакций с разными уровнями изоляции.
Если одну транзакцию выполнить с уровнем изоляции ReadCommited, а другую одновременно с первой с уровнем изоляции Serializable, то с каким уровнем каждая из них выполниться.
Т.е. что происходит когда одна транзакция запускается с одним уровнем изоляции, а другая после изменения уровня, но их выполнение пересекается?
в промышленных субд каждая со своим. транзакции могут натыкаться на блокировки друг друга, что задержит выполнение, но выполняться будет каждая со своим уровнем
Каждая со своим в смысле:
1. Что транзакция в соответствии со своим уровнем будет видеть другие транзакции?
Т.е. если Serializable завершилась, то в ReadCommited будут видны данные первой, но не наоборот.
или
2. Что данные транзакции в соответствии со своим уровнем будут доступны другим?

Т.е. если есть в Oracle хотя бы одна активная транзакция Serializable, то пока она не завершиться будут храниться все старые версии данных на момент её старта, даже если остальные транзакции ReadCommited?
...
Рейтинг: 0 / 0
Одновременное выполнение транзакций с разными уровнями изоляции.
    #37601604
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Одновременное выполнение,

первое. в оракле сериализабле смотрит на SCN блока, если он старше времени старта сериализабл транзакции он возьмет ту версию блока которая была актуальна на момент старта сериализабл транзакции. хранит оракл блоки как минимум на время указанное в переменной UNDO_RETENTION, если там дано 24 часа, значит будет 24 часа держать, не зависимо нужны ли какой-либо транзакции эти блоки. данные из UNDO для flash back наворотов используются. если транзакция длялась дольше времени UNDO_RETENTION, то получит ошибку ORA-1555 и получит rollback насильно.
блокировочники будут расставлять блокировки, там восновном проблема дедлока, когда одна транзакция понаставила локи на одну часть базы, другая на другую. если ни та не другая дальше продвинуться не может, сервер насильно делает rollback одной из них.
...
Рейтинг: 0 / 0
Одновременное выполнение транзакций с разными уровнями изоляции.
    #37601625
Yo.!Одновременное выполнение,

первое. в оракле сериализабле смотрит на SCN блока, если он старше времени старта сериализабл транзакции он возьмет ту версию блока которая была актуальна на момент старта сериализабл транзакции. хранит оракл блоки как минимум на время указанное в переменной UNDO_RETENTION, если там дано 24 часа, значит будет 24 часа держать, не зависимо нужны ли какой-либо транзакции эти блоки. данные из UNDO для flash back наворотов используются. если транзакция длялась дольше времени UNDO_RETENTION, то получит ошибку ORA-1555 и получит rollback насильно.
блокировочники будут расставлять блокировки, там восновном проблема дедлока, когда одна транзакция понаставила локи на одну часть базы, другая на другую. если ни та не другая дальше продвинуться не может, сервер насильно делает rollback одной из них.
А нельзя сделать чтобы не было жесткого UNDO_RETENTION, а блоки удалялись по мере отсутствия их необходимости?

И кстати как Oracle себя поведет?
если была таблица T с одной строкой и полем a=1

и Serializable выполнит:
Код: plsql
1.
UPDATE t SET a = 0;



А ReadCommited :
Код: plsql
1.
UPDATE t SET a = 2 WHERE a = 1;


Причем WHERE a = 1 отработало до завершения Serializable-транзакции, а SET a = 2 после завершения Serializable-транзакции.


Блокировочник очевидно выполнит все без ошибок и будет a=2. А если с дополнительной U-блокировкой, то a=0.
...
Рейтинг: 0 / 0
Одновременное выполнение транзакций с разными уровнями изоляции.
    #37601631
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Одновременное выполнениеА нельзя сделать чтобы не было жесткого UNDO_RETENTION, а блоки удалялись по мере отсутствия их необходимости?

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


Одновременное выполнениеИ кстати как Oracle себя поведет?
если была таблица T с одной строкой и полем a=1

и Serializable выполнит:
Код: plsql
1.
UPDATE t SET a = 0;



А ReadCommited :
Код: plsql
1.
UPDATE t SET a = 2 WHERE a = 1;


Причем WHERE a = 1 отработало до завершения Serializable-транзакции, а SET a = 2 после завершения Serializable-транзакции.


Блокировочник очевидно выполнит все без ошибок и будет a=2. А если с дополнительной U-блокировкой, то a=0.
то же самое будет. на модифицирующие запросы оракл ставит эксклюзивные блокировки. U-блокировки тоже есть.
...
Рейтинг: 0 / 0
Одновременное выполнение транзакций с разными уровнями изоляции.
    #37601685
unlogged tables
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!Одновременное выполнениеА нельзя сделать чтобы не было жесткого UNDO_RETENTION, а блоки удалялись по мере отсутствия их необходимости?

нет. можно создавать отдельные сегменты отката под тяжелые транзакции и потом их грохать руками, но по сути нет. да и нафиг не нужно, эти блоки потом очень пригождаются когда начинаются разборы полета и нужно поглядеть как база выглядела в какой-то момент в прошлом.
А для unlogged tables я так понимаю не выполняется ни одно свойство из ACID?
Т.е. для этих таблиц не хранятся версии и доступ к ним всегда осуществляется как к грязным данным.
...
Рейтинг: 0 / 0
Одновременное выполнение транзакций с разными уровнями изоляции.
    #37601698
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unlogged tablesYo.!пропущено...

нет. можно создавать отдельные сегменты отката под тяжелые транзакции и потом их грохать руками, но по сути нет. да и нафиг не нужно, эти блоки потом очень пригождаются когда начинаются разборы полета и нужно поглядеть как база выглядела в какой-то момент в прошлом.
А для unlogged tables я так понимаю не выполняется ни одно свойство из ACID?
Т.е. для этих таблиц не хранятся версии и доступ к ним всегда осуществляется как к грязным данным.Я не знаю, что такое unlogged tables, но если вы о таблицах в режиме NOLOGGING, то вы путаете функции журналов и табличного пространства undo. В журнал пишутся все транзакции, а undo хранит предыдущие версии.
...
Рейтинг: 0 / 0
Одновременное выполнение транзакций с разными уровнями изоляции.
    #37601708
unlogged tables
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander Ryndinunlogged tablesпропущено...

А для unlogged tables я так понимаю не выполняется ни одно свойство из ACID?
Т.е. для этих таблиц не хранятся версии и доступ к ним всегда осуществляется как к грязным данным.Я не знаю, что такое unlogged tables, но если вы о таблицах в режиме NOLOGGING, то вы путаете функции журналов и табличного пространства undo. В журнал пишутся все транзакции, а undo хранит предыдущие версии.
Т.е. NOLOGGING исключительно только на журнал влияет, т.е. из ACID, только Durability не соблюдается, а ACI соблюдаются в полном объеме?
И при нештатном shootdown сервера все NOLOGGING-таблицы будут очищены.
...
Рейтинг: 0 / 0
Одновременное выполнение транзакций с разными уровнями изоляции.
    #37601762
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unlogged tablesAlexander Ryndinпропущено...
Я не знаю, что такое unlogged tables, но если вы о таблицах в режиме NOLOGGING, то вы путаете функции журналов и табличного пространства undo. В журнал пишутся все транзакции, а undo хранит предыдущие версии.
Т.е. NOLOGGING исключительно только на журнал влияет, т.е. из ACID, только Durability не соблюдается, а ACI соблюдаются в полном объеме?
И при нештатном shootdown сервера все NOLOGGING-таблицы будут очищены.В целом да, но еще нужно понимать, что NOLOGGING не влияет на обычные INSERT, UPDATE, DELETE.
...
Рейтинг: 0 / 0
Одновременное выполнение транзакций с разными уровнями изоляции.
    #37601790
unlogged tables
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander Ryndinunlogged tablesпропущено...

Т.е. NOLOGGING исключительно только на журнал влияет, т.е. из ACID, только Durability не соблюдается, а ACI соблюдаются в полном объеме?
И при нештатном shootdown сервера все NOLOGGING-таблицы будут очищены.В целом да, но еще нужно понимать, что NOLOGGING не влияет на обычные INSERT, UPDATE, DELETE.
В смысле только CREATE TABLE AS работает?
А ещё есть варианты вставить данные в не пустую таблицу но без записи в журнал транзакций?
...
Рейтинг: 0 / 0
Одновременное выполнение транзакций с разными уровнями изоляции.
    #37601812
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unlogged tablesAlexander Ryndinпропущено...
В целом да, но еще нужно понимать, что NOLOGGING не влияет на обычные INSERT, UPDATE, DELETE.
В смысле только CREATE TABLE AS работает?
А ещё есть варианты вставить данные в не пустую таблицу но без записи в журнал транзакций?С помощью direct load (INSERT /*+APPEND*/, SQL Loader)
...
Рейтинг: 0 / 0
Одновременное выполнение транзакций с разными уровнями изоляции.
    #37602286
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одновременное выполнениеА нельзя сделать чтобы не было жесткого UNDO_RETENTION, а блоки удалялись по мере отсутствия их необходимости?
Необходимость - понятие философское. До той поры, пока есть место "куда писать версии", удалить версию сейчас или позже - в общем-то внутреннее дело сервера. Поведение начинает быть значимым, когда место кончается (чего, конечно, в отстроенной системе происходить не должно).

Когда место кончается, у сервера есть выбор из следующих вариантов:

Найти ещё место

Грохнуть часть старых версий

Остановить поток новых версий

Этот выбор таков не для оракла, а для любого версионника. Так вот, UNDO_RETENTION грубо говоря, регулирует, какой из вариантов сервер будет склонен выбирать. Если можно побить старые версии, он их побьёт, если сказано их сохранить - попытается расширить файл, и при невозможности скажет пишущим транзакциям out of space
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Одновременное выполнение транзакций с разными уровнями изоляции.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]