|
|
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
Можноли в plqsl делать commit типа for c in ... loop insert ... ; delete ...; ... commit; end loop; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 10:23:08 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
Можно, а зачем ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 10:28:11 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 10:30:19 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
В смысле, зачем в цикле ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 10:52:42 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
to gluk Например в цикле идёт обновление большого количества записей. Для предотвращения разростания RBS неплохо например после каждого 100 изменения делать commit ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 11:17:21 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
to Vladimir_: Распространнёная ошибка, что как можно чаще нужно делать COMMIT. Однако знающие люди скажут, что расходов от частого коммита куда больше, чем от правильно настроенных сегментов отката. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 11:23:51 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
Ага, гикнется он у тебя где-нить на 1000 цикле, будешь то что навтыкал ручками вычищать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 11:24:12 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
Вообще Том Кайт пишет, что использование промежуточных коммитов не есть хорошо. Эту привычку обычно имеют перешедшие из других баз. Почему не хорошо: 1) Фактически, тратится больше ресурсов при промежуточных комитах, чем при одной долгой транзакции. 2) При одной работающей транзакции данные в RBS заблокированы и не могут быть перезаписаны, так как могут понадобится для отката. Что исключает ошибку -1555 в других сенсах из за этой транзакции. При промежуточных комитах, эти данные в RBS могут быть перезаписаны. 3) При промежуточных комитах можно получить неконсистентность данных при сбое в работе пакетного задания, откат всех изменений не будет возможен из за промежуточных комитов. А что RBS будет расти так это не страшно - можно просто выделять особый RBS для такого пакетного задания а потом удалять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 11:32:31 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
Дополнительно к тому что есть плохо что сказала Violina: За счёт частых COMMIT увеличивается обьём редо-лога, то есть он быстрее заполняется, то есть чаще происходит переключение журналов, что может приводить к Checkpoint not complete, что в конечном счётё так подвешивает систему, что о никаких преимуществах частого коммита говорить вообще не приходится. to Gluk (Kazan): Я вообще сказал выше, что нужно по уму настроить сегменты отката, тогда ничего не будет. Дейстивтельно у Тома Кайта по этому поводу хорошо расписано. Советую почитать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 11:38:06 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
коммит надо делать только тогда когда этого требует логика программы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 11:38:55 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
to softbuilder За счёт частых COMMIT увеличивается обьём редо-лога, то есть он быстрее заполняется А это почему? Сам по себе ведь commit мало что делает. Мое предположение, потому что при commite происходит сброс изменений из redo buffer в redo log. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 11:47:00 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
по поводу коммита хорошо описано в книге тома кайта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 11:55:33 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
to Violina: Дело не в том, что делает COMMIT и сколько в контексте того что я имел ввиду. Сама команда COMMIT непосредственно помещается в редо-лог. Если скажем производится 20000 различых операций INSERT, DELETE, UPDATE. И скажем делать COMMIT после каждых 100 операций, то в редо-логах будет 200 коммитов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 11:56:52 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
2 softbuilder@inbox.ru Первый том читаю уже по третьему кругу, второго еще не дождался. Если Вы заметили, в своих постах я высказался против частого COMMIT, или Вы не так меня поняли ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 12:01:58 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
Ага понял, просто оба поста пришли практически одновременно. Это я не с softbuilder@inbox.ru дискутировал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 12:04:39 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
to softbuilder Я не говорил о частых commitах и о пользе данного дела. Я уже приводил пример о расчёте абоненткой платы, когда данное действие повторяется для каждого абонента. Назначать специальный RBS для данной операции у конечного пользователя мне кажется не очень хороший подход. Нужно всегда пытаться найти оптимальное решение поставленной задачи. И иногда в этом помогает использование промежуточных commit. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 12:27:39 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
Просто для информации (не для подтверждения или опровержения какого либо утверждения здесь). Встретила в 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 13:10:29 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
попробуйте поиспользовать автономные транзакции том кайт доказал, что 1. один sql оператор засовывающий в базу 1 млн строк работает гораздо быстрейчем тысяча операторов делающих тоже самое 2. тысяча операторов с одним коммитом, работает быстрей чем тысяча операторов с кучей коммитов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 13:28:15 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
А причем тут автономные транзакции ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 14:04:34 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
просто удобно вызываешь процедуру, которая работает с одним абонентом сто раз вызвал, сто абонентов счастливы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 14:11:39 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
что-то я не совсем понимаю смысл использования автономных транзакций в данном случае. Если я не ошибаюсь, то будет только хуже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 14:23:03 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
чем хуже то?? тебе нужно же делать коммит для каждого абонента? самый простой вариант for... loop вызываем автономную процедуру для работы с одним абонентом end loop; если потом в главной сессии все отвалится у этих абонентов все изменения остануться, в чем то плюс в чем то минус можно на эту тему спорить и обсуждать полдня:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 15:30:55 |
|
||
|
for цикл commit
|
|||
|---|---|---|---|
|
#18+
Вопрос был вызван тем что возникала ошибка ora-xxxx не помню уж какая Когда commit из цикла выкинул все ok Наверно версия oracle была кривая , 8.?.? Или девелоперы чето написали не того , заразы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2003, 20:29:10 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32185124&tid=1989906]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
215ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
84ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 588ms |

| 0 / 0 |
