|
|
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Вчера Влад читал лекцию с красивыми картинками как сабж запроса сливается с сабжем транзакции. Хорошенько проспавшись, сформулировались у меня два вопроса. Вопрос первый: если какая-то запись уже изменялась в этой транзакции, информация о ней в логе объединится или удвоится? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 14:48:50 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovесли какая-то запись уже изменялась в этой транзакции, информация о ней в логе объединится или удвоится?я бы сделал два "забега", с трейсом: в первом забеге поменял бы "длинную" запись (varchar(NNNN)) 1000 раз, затем - 10 тыс. Засёк бы время по трейсу. Во втором бы повторил это всё, срубая аттач примерно перед окончанием DML. И смотрел бы при этом на время в execute_statement_finish. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 15:21:22 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Непоказательно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 15:22:43 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНепоказательно.Why ? если время по двум вариантам устойчиво (не-) различается, то... что "не показательного" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 16:53:18 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovВопрос первый: если какая-то запись уже изменялась в этой транзакции, информация о ней в логе объединится или удвоится? смотря что называть "информацией о записи в логе". Она состоит из двух частей - собственно undo item (два десятка служебных байт, всегда в памяти) и undo data (собственно данные записи, могут уходить в temp). При первом апдейте в логе будет только undo item, т.к. для отката нам достаточно сделать backout. Второй апдейт приведет к update-in-place, так что в логе будет и undo item и undo data, отдельно от первого undo item-а (на другом сейвпойнте). При слиянии второго сейвпойнта с сейвпойнтом тр-ции (по окончании второго апдейта) инфа о записи объединится. Иными словами, дублирование в логе будет только на время выполнения второго апдейта и только в размере undo item, а не всей записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 17:09:11 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
dimitrПри слиянии второго сейвпойнта с сейвпойнтом тр-ции (по окончании второго апдейта) инфа о записи объединится. И после этого слияния в логе транзакции будет только undo item, без undo data, правильно? Тогда вопрос номер два: какое место в этой картине занимают explicit savepoint и особенно в случае, если лог транзакции не существует? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 17:38:43 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovИ после этого слияния в логе транзакции будет только undo item, без undo data, правильно? насколько я помню, да Dimitry SibiryakovТогда вопрос номер два: какое место в этой картине занимают explicit savepoint и особенно в случае, если лог транзакции не существует? они ничем не отличаются от системных, кроме метода порождения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 17:40:38 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
dimitrони ничем не отличаются от системных, кроме метода порождения Чисто уточнить, что я правильно понимаю: 1) В отличии от сабжа транзакции, их сабж никогда не уничтожается (и, соответственно, порождается даже при tpb_no_auto_undo). 2) Если не было release savepoint, то их лог никогда не вливается в транзакционный. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 17:53:58 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЧисто уточнить, что я правильно понимаю: 1) В отличии от сабжа транзакции, их сабж никогда не уничтожается (и, соответственно, порождается даже при tpb_no_auto_undo). 2) Если не было release savepoint, то их лог никогда не вливается в транзакционный. 1) уничтожается при RELEASE/ROLLBACK + tpb_no_auto_undo, ну и при завершении транзакции, естественно 2) верно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 20:51:06 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
dimitr1) уничтожается при RELEASE/ROLLBACK + tpb_no_auto_undo, ну и при завершении транзакции, естественно Я неправильно выразился. Имелось в виду, что он не уничтожается при достижении размера 50000 записей. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 21:09:23 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
нет, конечно, упаси боже. И системные и юзерские сейвпойнты всегда должны иметь возможность откатить свои изменения, это краеугольный камень. А для сейвпойнта транзакции это всего-лишь бонус, влияющий на производительность, никакой функциональной нагрузки он не несет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 21:15:50 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovВчера Влад читал лекцию Линк будет? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 22:32:15 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Люблю такие топики. Димы, спасибо. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 22:46:20 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
dimitrОна состоит из двух частей - собственно undo item (два десятка служебных байт, всегда в памяти) и undo data (собственно данные записи, могут уходить в temp). Ещё вопрос: каков формат undo data? Дельта, message или DSC? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2013, 18:29:02 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
NickDeeЛинк будет? :) нет, не будет. Лекция была за деньги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2013, 18:35:12 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovИмелось в виду, что он не уничтожается при достижении размера 50000 записей. к слову, было сказано, что пресловутые "50-60к записей" весьма условная цифра, т.к. подсчет ведется достаточно сложным образом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2013, 18:36:51 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЕщё вопрос: каков формат undo data? Дельта, message или DSC? распакованная запись (record->rec_data) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2013, 18:45:19 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
kdvNickDeeЛинк будет? :) нет, не будет. Лекция была за деньги. Можно было бы сделать бесплатный доступ к видео для участников, и платный для неучастников. Просто мысли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2013, 20:16:53 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
NickDeeМожно было бы сделать бесплатный доступ к видео для участников, и платный для неучастников. Просто мысли. можно было бы, если бы. А так - видео снимать запрещено, и сами не снимаем, потому что продавать его не планировали. Ибо такие вещи "продаются" практически никак, и до первого, кто их начнет распространять бесплатно. Такой семинар, платный, планировался в Москве, но пока с датой неясно. Например, у меня до конца декабря курсы, в январе командировка, а в феврале, по идее, семинар по транзакциям пройдет в Варшаве и Будапеште (второе пока под вопросом). Получается, что Москва не раньше марта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2013, 20:21:41 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
От нечего делать копался в птичьих потрохах. Обнаружил, что сабж - битовая маска. Пожалуйста, скажите, что я как обычно ошибаюсь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2014, 01:00:25 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Конечно, ты ошибаешься. А каким образом undo log может представлять собой битмап? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2014, 01:12:25 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамА каким образом undo log может представлять собой битмап? Там установлены биты для каждой модифицированной записи в таблице. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2014, 01:21:03 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovОт нечего делать копался в птичьих потрохах. Обнаружил, что сабж - битовая маска. Пожалуйста, скажите, что я как обычно ошибаюсь...В простейшем случае - не ошибаешься. Если запись не модифицировалась несколько раз (в одной и той же тр-ции), то в undo log попадает только её (записи) номер, который, есс-но, живёт в разреженном битмапе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2014, 01:25:59 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
kdvNickDeeЛинк будет? :) нет, не будет. Лекция была за деньги. расскажите хотя бы, что за undo log, а то вдруг нужная вещь, тогда можно будет и на платную лекцию в следующий раз сходить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2014, 09:49:07 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
SEYD, IBDeveloper Magazine, номер 1. например, есть в google books. еще - http://www.ibase.ru/devinfo/savepoints.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2014, 11:29:22 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
dimitrDimitry SibiryakovИ после этого слияния в логе транзакции будет только undo item, без undo data, правильно? насколько я помню, да Или я слеп как крот, или одно из двух... В VIO_verb_cleanup() я вижу вызовы verb_post() без проверки если вливание идёт в лог транзакции. В verb_post() я тоже таких проверок не вижу. Отсюда делаю вывод, что undo data таки сливаются в транзакционый Savepoint. Где я ошибаюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 16:59:39 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Прочитай комментарии в VIO_verb_cleanup ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 17:49:29 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
hvladПрочитай комментарии в VIO_verb_cleanup В "сливающей" ветке там аккурат так два комментария: vio.cpp // This savepoint needs to be posted to the previous savepoint. и vio.cpp // Setup more of rpb because verb_post is probably going to // garbage-collect. Note that the data doesn't need to be set up // because old_data will be used. (this guarantees that the // rpb points to the first fragment of the record) из них я в упор не вижу где undo data будет уничтожено без использования. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 18:03:44 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
В начале Код: plaintext 1. 2. 3. 4. и в конце Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 18:15:01 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Ну, и на эту строчку тоже посмотри Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 18:18:58 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Оба этих комментария относятся к отправлению в мусорку целого транзакционного сейфпоинта из-за его размеров. Я же спрашиваю о случае когда он сохраняется, поскольку достаточно мал и в него вливаются такие же маленькие сейфпоинты, но с undo data внутри. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 18:20:19 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
hvladна эту строчку тоже посмотри Она всего лишь начинает блок "отката или объединения". Следующий if конкретно делит поток выполнения на "откат" и "влив". Так вот ветка "отката" на данный момент меня не волнует. ;) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 18:28:08 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, я тебя потерял - в чём вопрос-то ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 20:01:18 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
hvladя тебя потерял - в чём вопрос-то ? Где процедура/ветка, которая сливает в транзакционный сейфпоинт битмап записей, но без undo data. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 20:08:14 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovГде процедура/ветка, которая сливает в транзакционный сейфпоинт битмап записей, но без undo data. Код: sql 1. 2. 3. 4. 5. см. четвертый параметр у verb_post() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 20:18:23 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
dimitr Код: sql 1. 2. 3. 4. 5. Поправьте меня, если я ошибаюсь, но action берётся из текущего вливаемого Savepoint. Тот, в который вливают это transaction->tra_save_point. Соответственно, процитированный код звучит как "если у данного Savepoint для данной таблицы списка undo data нет вообще или в этом списке нет undo data для данной записи, то влить данную запись без undo data". Что логично - нету же его. Дальше по коду идут случаи когда а) undo data есть и запись не удалена - undo data вливается, и б) когда запись была изменена и потом удалена - вливается тоже без undo data. А я говорю о случае, когда у текущего Savepoint для данной записи undo data есть, запись не удалена, но undo data не вливается в следующий Savepoint, поскольку тот принадлежит транзакции (имеет флаг SAV_trans_level). Вот этого случая я не могу найти в коде. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 20:42:17 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovГде процедура/ветка, которая сливает в транзакционный сейфпоинт битмап записей, но без undo data.Я тебя стал понимать ещё меньше. Dimitry SibiryakovА я говорю о случае, когда у текущего Savepoint для данной записи undo data есть, запись не удалена, но undo data не вливается в следующий Savepoint, поскольку тот принадлежит транзакции (имеет флаг SAV_trans_level). Вот этого случая я не могу найти в коде.Потому что такого нет и быть не может (если я хоть что-то понял в процитированном) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 20:48:33 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
hvladПотому что такого нет и быть не может (если я хоть что-то понял в процитированном) Точно. До меня дошло: не существует запроса, способного изменить одну запись дважды. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 20:57:50 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, ты не вот это часом ищешь? Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 21:05:12 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovhvladПотому что такого нет и быть не может (если я хоть что-то понял в процитированном) Точно. До меня дошло: не существует запроса, способного изменить одну запись дважды.Я очень рад, что до тебя что-то дошло, хотя я по-прежнему ничего не могу понять. PS Наш MERGE может изменить одну запись дважды, кривой триггер на UPDATE может повторно изменить ту же запись... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 21:07:53 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
dimitrты не вот это часом ищешь? Да, именно это. Я просто не грокнул всех последствий этой ветки. Всё-таки туповат я для проектов такого уровня. hvladНаш MERGE может изменить одну запись дважды, кривой триггер на UPDATE может повторно изменить ту же запись... Нет, триггер (а точнее - запрос в нём) выполняется в собственном сейфпоинте, так что не может дойти к ситуации, когда родительский сейфпоинт запись не трогал, а дочерний сразу приходит с undo data. А вот за MERGE я не уверен... В каких случаях он может изменить запись дважды и как при этом будет с сейфпоинтами? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 21:20:02 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovhvladНаш MERGE может изменить одну запись дважды, кривой триггер на UPDATE может повторно изменить ту же запись... Нет, триггер (а точнее - запрос в нём) выполняется в собственном сейфпоинте, так что не может дойти к ситуации, когда родительский сейфпоинт запись не трогал, а дочерний сразу приходит с undo data.А ты в курсе, что после выполнения стеймента, данные его сейвпойнта сливаются с предыдущим ? При помощи того же verb_post Dimitry SibiryakovА вот за MERGE я не уверен... В каких случаях он может изменить запись дважды и как при этом будет с сейфпоинтами?MERGE - это OUTER JOIN. Надеюсь, ты можешь придумать случай, когда записи одного потока соответствует более одной записи из другого ? :) С сейвпойнтами ничего необычного не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 22:58:26 |
|
||
|
Undo log
|
|||
|---|---|---|---|
|
#18+
hvladА ты в курсе, что после выполнения стеймента, данные его сейвпойнта сливаются с предыдущим? При помощи того же verb_post Да, но это фигня. Когда дело последовательно дойдёт-таки до сейфпоинта, где запись была впервые потрогана, undo data благополучно дропнется. hvladMERGE - это OUTER JOIN. Надеюсь, ты можешь придумать случай, когда записи одного потока соответствует более одной записи из другого ? :) С сейвпойнтами ничего необычного не будет. Дай угадаю: у каждого вложенного update свой сейфпоинт, а у merge - свой, общий на них всех?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2014, 23:25:33 |
|
||
|
|

start [/forum/topic.php?all=1&fid=40&tid=1563773]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
192ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 504ms |

| 0 / 0 |
