Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / for цикл commit / 25 сообщений из 37, страница 1 из 2
18.06.2003, 10:23:08
    #32185010
rustem5
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
for цикл commit
Можноли в plqsl делать commit
типа
for c in ...
loop
insert ... ;
delete ...;
...
commit;
end loop;
...
Рейтинг: 0 / 0
18.06.2003, 10:28:11
    #32185013
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
for цикл commit
Можно, а зачем ?
...
Рейтинг: 0 / 0
18.06.2003, 10:30:19
    #32185019
gda
gda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
for цикл commit
Код: 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
18.06.2003, 10:52:42
    #32185059
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
for цикл commit
В смысле, зачем в цикле ?
...
Рейтинг: 0 / 0
18.06.2003, 11:17:21
    #32185107
Vladimir_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
for цикл commit
to gluk
Например в цикле идёт обновление большого количества записей. Для предотвращения разростания RBS неплохо например после каждого 100 изменения делать commit
...
Рейтинг: 0 / 0
18.06.2003, 11:23:51
    #32185122
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
for цикл commit
to Vladimir_:

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

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

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

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

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

to Gluk (Kazan):

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

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

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

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

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

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

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

Встретила в

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
18.06.2003, 13:28:15
    #32185368
Simon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
for цикл commit
попробуйте поиспользовать автономные транзакции

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

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

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

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

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

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

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


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