Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Блоки / 25 сообщений из 28, страница 1 из 2
27.02.2021, 18:37
    #40049230
SenjorPomidor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
Здравствуйте!
Есть только что созданная пустая таблица test с одним числовым полем.
Первый сеанс делает вставку без commit
insert into test values(1);
Второй сеанс делает вставку без commit
insert into test values(2);
Затем делается commit в обоих сеансах.
В результате видим, что строки находятся в разных блоках.
Почему? Зачем второй блок использовать, когда первый почти пустой?
...
Рейтинг: 0 / 0
27.02.2021, 18:46
    #40049233
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
На случай если одна из транзакций закончится rollback.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.02.2021, 18:59
    #40049236
SenjorPomidor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
Dimitry Sibiryakov

На случай если одна из транзакций закончится rollback.

Не очень понял ответ. Если одна из транзакций делает rollback просто удалится ее строка из блока. Как это может повлиять на другую строку (второго сеанса), если она в том же блоке будет...
...
Рейтинг: 0 / 0
27.02.2021, 18:59
    #40049237
SeaGate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
...
Рейтинг: 0 / 0
27.02.2021, 19:03
    #40049238
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
SenjorPomidorЕсли одна из транзакций делает rollback просто удалится ее строка из блока.

По умолчанию Оракул откатывает блок целиком.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.02.2021, 19:12
    #40049242
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
Dimitry Sibiryakov

SenjorPomidorЕсли одна из транзакций делает rollback просто удалится ее строка из блока.

По умолчанию Оракул откатывает блок целиком.
что за бред....
...
Рейтинг: 0 / 0
27.02.2021, 19:28
    #40049243
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
Sayan Malakshinovчто за бред....

Если в умолчательном режиме NOROWDEPENDENCIES найдёшь у записи информацию какой транзакции
она принадлежит - сообщи.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.02.2021, 19:30
    #40049244
SenjorPomidor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
Dimitry Sibiryakov

SenjorPomidorЕсли одна из транзакций делает rollback просто удалится ее строка из блока.

По умолчанию Оракул откатывает блок целиком.

То есть, если, к примеру, различные сеансы производят update строк (каждый сеанс - свою строку), находящихся в одном блоке, то rollback в одном из сеансов откатит все апдейты ДРУГИХ сеансов? ))
...
Рейтинг: 0 / 0
27.02.2021, 19:35
    #40049246
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
SenjorPomidorТо есть, если, к примеру, различные сеансы производят update строк (каждый сеанс - свою
строку), находящихся в одном блоке, то rollback в одном из сеансов откатит все апдейты
ДРУГИХ сеансов? ))

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

https://docs.oracle.com/cd/B19306_01/server.102/b14220/consist.htm
...
Рейтинг: 0 / 0
27.02.2021, 19:59
    #40049248
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
Dimitry Sibiryakov
Sayan Malakshinovчто за бред....

Если в умолчательном режиме NOROWDEPENDENCIES найдёшь у записи информацию какой транзакции
она принадлежит - сообщи.что ты за околесицу ты несешь... почитай про строение блока и undo...
Dimitry Sibiryakov
они встанут на ожидание блокировки этого блока
ужас....
...
Рейтинг: 0 / 0
27.02.2021, 20:04
    #40049249
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
Dimitry Sibiryakov
NOROWDEPENDENCIES
ROWDEPENDENCIES всего лишь добавляет скрытый столбец DSCN
...
Рейтинг: 0 / 0
27.02.2021, 20:22
    #40049253
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
Sayan Malakshinov
что ты за околесицу ты несешь...
Этот закостенелый си-шник знает Oracle в основном на уровне OCI.
И нести бред - это его нередкое состояние:
22284504
22073887
22014493
...
Рейтинг: 0 / 0
28.02.2021, 15:14
    #40049355
flexgen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
Dimitry Sibiryakov

SenjorPomidorЕсли одна из транзакций делает rollback просто удалится ее строка из блока.

По умолчанию Оракул откатывает блок целиком.


Я не понял, это как так? Если две записи были записаны в блок двумя разными транзакциями, первая была завершена (commit) а вторая отменена (rollback), то, следуя твоему утверждению, обе записи будут удалены? Это что-то новое для меня.
...
Рейтинг: 0 / 0
28.02.2021, 15:28
    #40049359
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
flexgenЕсли две записи были записаны в блок двумя разными транзакциями

А теперь перечитываем первый пост: разные транзакции не пишут записи в один блок.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.02.2021, 16:33
    #40049367
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
Dimitry Sibiryakov,

Прекрати нести феерический бред.
...
Рейтинг: 0 / 0
28.02.2021, 17:08
    #40049376
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
Я-то могу и прекратить, но что, никто не собирается ответить на вопрос топикстартера от
слова "совсем"?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.02.2021, 17:24
    #40049382
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
Dimitry Sibiryakov,

Ответ уже давно дали: 22287350
...
Рейтинг: 0 / 0
01.03.2021, 14:40
    #40049552
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
Dimitry Sibiryakov

разные транзакции не пишут записи в один блок.


1) добавте две строки в один блок
2) коммит
3) поменяйте первую строку в одной сессии, вторую в другой
4) в первой коммит
5) второй роллбек

разные транзакции записали в один блок

.....
stax
...
Рейтинг: 0 / 0
04.03.2021, 20:01
    #40050853
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
SenjorPomidor
Зачем второй блок использовать, когда первый почти пустой?

Лучше задать другой вопрос - зачем всем ломиться в первый блок, рискуя конкуренцией? Oracle старается разбросать нагрузку, чтобы не возникало узких мест. В прошлом ответом на Ваш вопрос было бы ключевое слово FREELISTS. В эпоху ASM это уже не особо актуально, но принцип остался тем же самым, так что прочитайте про freelists, если хотите понять ситуацию без погружения в дебри.
...
Рейтинг: 0 / 0
04.03.2021, 20:47
    #40050859
SenjorPomidor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
softwarer
SenjorPomidor
Зачем второй блок использовать, когда первый почти пустой?

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

Спасибо, я уже понял, что это особенность параллельной вставки. Получается Ораклу дорого и некогда выяснять, получится ли вставить в данный блок строки в параллельном режиме, здесь главное - скорость. Поэтому каждая сессия "свой" блок захватывает в соответствии с freelists.
Но замечу, что при параллельных апдейтах строки, находящиеся в одном блоке, прекрасно обновляются (одновременно) разными сеансами и никто конкуренции не боится.
...
Рейтинг: 0 / 0
04.03.2021, 21:02
    #40050861
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
SenjorPomidor
Но замечу, что при параллельных апдейтах строки, находящиеся в одном блоке, прекрасно обновляются (одновременно) разными сеансами и никто конкуренции не боится.

Не настолько прекрасно. "Не боится" - неправильные слова, ближе к истине "без помощи разработчика Oracle мало что может с ними сделать". Параллельные апдейты горячего блока - вполне себе популярный способ затормозить систему, в том числе просто из-за слотов транзакций (например, если восемь сессий хотят одновременно обновить разные и непересекающиеся строки в этом блоке, то только две или три действительно это сделают, а остальные повиснут на блокировке, ожидая коммита предыдущих).
...
Рейтинг: 0 / 0
04.03.2021, 21:21
    #40050862
SenjorPomidor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
softwarer
Параллельные апдейты горячего блока - вполне себе популярный способ затормозить систему, в том числе просто из-за слотов транзакций (например, если восемь сессий хотят одновременно обновить разные и непересекающиеся строки в этом блоке, то только две или три действительно это сделают, а остальные повиснут на блокировке, ожидая коммита предыдущих).

А почему такие цифры скромные для примера? ) Количеством сессий для обновления блока вроде maxtrans управляет. Он уже хотя и не редактируется, но по умолчанию выставлен в значение 255 (транзакций).
...
Рейтинг: 0 / 0
04.03.2021, 21:37
    #40050868
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
SenjorPomidor
Количеством сессий для обновления блока вроде maxtrans управляет.

Нет. Он задаёт верхнюю границу, но при этом никто не обещал, что блок эту границу достигнет. Если говорить про значение 255, то, в общем, можно быть уверенным, что вне специально организованного примера - не достигнет.
...
Рейтинг: 0 / 0
04.03.2021, 21:43
    #40050870
SenjorPomidor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
softwarer,

Спасибо. Понял.
...
Рейтинг: 0 / 0
04.03.2021, 22:53
    #40050887
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блоки
softwarer
в том числе просто из-за слотов транзакций (например, если восемь сессий хотят одновременно обновить разные и непересекающиеся строки в этом блоке, то только две или три действительно это сделают, а остальные повиснут на блокировке, ожидая коммита предыдущих).
Это, в общем случае, неверно. Всё зависит от наличия свободного места в блоке, которое, в том числе, зависит от PCTFREE.

Делать заявления с квантором всеобщности - стратегически непрофессионально. Легко налететь на контрпример.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Блоки / 25 сообщений из 28, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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