powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / for цикл commit
25 сообщений из 37, страница 1 из 2
for цикл commit
    #32185010
rustem5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можноли в plqsl делать commit
типа
for c in ...
loop
insert ... ;
delete ...;
...
commit;
end loop;
...
Рейтинг: 0 / 0
for цикл commit
    #32185013
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно, а зачем ?
...
Рейтинг: 0 / 0
for цикл commit
    #32185019
gda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create or replace procedure my_gda_pro is
begin
for i in  1 .. 2  loop
insert into test_1 values( 2 );
delete from test_1 where col1= 2 ;
commit;  --> RABOTAET
 
end loop;  
end my_gda_pro;
...
Рейтинг: 0 / 0
for цикл commit
    #32185059
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В смысле, зачем в цикле ?
...
Рейтинг: 0 / 0
for цикл commit
    #32185107
Vladimir_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to gluk
Например в цикле идёт обновление большого количества записей. Для предотвращения разростания RBS неплохо например после каждого 100 изменения делать commit
...
Рейтинг: 0 / 0
for цикл commit
    #32185122
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Vladimir_:

Распространнёная ошибка, что как можно чаще нужно делать COMMIT.
Однако знающие люди скажут, что расходов от частого коммита куда больше, чем от правильно настроенных сегментов отката.
...
Рейтинг: 0 / 0
for цикл commit
    #32185124
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, гикнется он у тебя где-нить на 1000 цикле, будешь то что навтыкал ручками вычищать ?
...
Рейтинг: 0 / 0
for цикл commit
    #32185142
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще Том Кайт пишет, что использование промежуточных коммитов не есть хорошо. Эту привычку обычно имеют перешедшие из других баз.

Почему не хорошо:

1) Фактически, тратится больше ресурсов при промежуточных комитах, чем при одной долгой транзакции.
2) При одной работающей транзакции данные в RBS заблокированы и не могут быть перезаписаны, так как могут понадобится для отката. Что исключает ошибку -1555 в других сенсах из за этой транзакции. При промежуточных комитах, эти данные в RBS могут быть перезаписаны.
3) При промежуточных комитах можно получить неконсистентность данных при сбое в работе пакетного задания, откат всех изменений не будет возможен из за промежуточных комитов.

А что RBS будет расти так это не страшно - можно просто выделять особый RBS для такого пакетного задания а потом удалять.
...
Рейтинг: 0 / 0
for цикл commit
    #32185152
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дополнительно к тому что есть плохо что сказала Violina:

За счёт частых COMMIT увеличивается обьём редо-лога, то есть он быстрее заполняется, то есть чаще происходит переключение журналов, что может приводить к Checkpoint not complete, что в конечном счётё так подвешивает систему, что о никаких преимуществах частого коммита говорить вообще не приходится.

to Gluk (Kazan):

Я вообще сказал выше, что нужно по уму настроить сегменты отката, тогда ничего не будет.

Дейстивтельно у Тома Кайта по этому поводу хорошо расписано. Советую почитать.
...
Рейтинг: 0 / 0
for цикл commit
    #32185153
Simon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коммит надо делать только тогда когда этого требует логика программы
...
Рейтинг: 0 / 0
for цикл commit
    #32185167
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to softbuilder

За счёт частых COMMIT увеличивается обьём редо-лога, то есть он быстрее заполняется

А это почему? Сам по себе ведь commit мало что делает. Мое предположение, потому что при commite происходит сброс изменений из redo buffer в redo log.
...
Рейтинг: 0 / 0
for цикл commit
    #32185183
Simon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по поводу коммита хорошо описано в книге тома кайта
...
Рейтинг: 0 / 0
for цикл commit
    #32185187
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Violina:

Дело не в том, что делает COMMIT и сколько в контексте того что я имел ввиду. Сама команда COMMIT непосредственно помещается в редо-лог.

Если скажем производится 20000 различых операций INSERT, DELETE, UPDATE.
И скажем делать COMMIT после каждых 100 операций, то в редо-логах будет 200 коммитов.
...
Рейтинг: 0 / 0
for цикл commit
    #32185197
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 softbuilder@inbox.ru

Первый том читаю уже по третьему кругу, второго еще не дождался.
Если Вы заметили, в своих постах я высказался против частого COMMIT, или Вы не так меня поняли ?
...
Рейтинг: 0 / 0
for цикл commit
    #32185201
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага понял, просто оба поста пришли практически одновременно. Это я не с softbuilder@inbox.ru дискутировал :)
...
Рейтинг: 0 / 0
for цикл commit
    #32185202
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо так
...
Рейтинг: 0 / 0
for цикл commit
    #32185244
Vladimir_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to softbuilder
Я не говорил о частых commitах и о пользе данного дела. Я уже приводил пример о расчёте абоненткой платы, когда данное действие повторяется для каждого абонента. Назначать специальный RBS для данной операции у конечного пользователя мне кажется не очень хороший подход. Нужно всегда пытаться найти оптимальное решение поставленной задачи. И иногда в этом помогает использование промежуточных commit.
...
Рейтинг: 0 / 0
for цикл commit
    #32185325
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто для информации (не для подтверждения или опровержения какого либо утверждения здесь).

Встретила в

Enterprise DBA Part 1A:
Architecture and
Administration

Because the redo log buffer may be flushed before the COMMIT, the size of the
transaction does not affect the amount of time needed for an actual COMMIT
operation.
...
Рейтинг: 0 / 0
for цикл commit
    #32185368
Simon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуйте поиспользовать автономные транзакции

том кайт доказал, что
1. один sql оператор засовывающий в базу 1 млн строк работает гораздо быстрейчем тысяча операторов делающих тоже самое
2. тысяча операторов с одним коммитом, работает быстрей чем тысяча операторов с кучей коммитов
...
Рейтинг: 0 / 0
for цикл commit
    #32185440
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А причем тут автономные транзакции ?
...
Рейтинг: 0 / 0
for цикл commit
    #32185458
Simon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто удобно
вызываешь процедуру, которая работает с одним абонентом

сто раз вызвал, сто абонентов счастливы
...
Рейтинг: 0 / 0
for цикл commit
    #32185479
Vladimir_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то я не совсем понимаю смысл использования автономных транзакций в данном случае. Если я не ошибаюсь, то будет только хуже.
...
Рейтинг: 0 / 0
for цикл commit
    #32185611
Simon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чем хуже то??

тебе нужно же делать коммит для каждого абонента?

самый простой вариант

for... loop
вызываем автономную процедуру для работы с одним абонентом
end loop;

если потом в главной сессии все отвалится у этих абонентов все изменения остануться, в чем то плюс в чем то минус
можно на эту тему спорить и обсуждать полдня:)
...
Рейтинг: 0 / 0
for цикл commit
    #32185973
rustem5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос был вызван тем что возникала ошибка ora-xxxx не помню уж какая
Когда commit из цикла выкинул все ok
Наверно версия oracle была кривая , 8.?.?
Или девелоперы чето написали не того , заразы
...
Рейтинг: 0 / 0
for цикл commit
    #32186068
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Simon

Хуже тем, что такие изменения должны проходить либо все сразу, либо не одно, иначе приходится много работать руками. Сам работаю с биллингом, неоднократно на подобные грабли вставал.
...
Рейтинг: 0 / 0
25 сообщений из 37, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / for цикл commit
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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