|
Изменить все строки поля типа integer на заданную величину максимально быстро
|
|||
---|---|---|---|
#18+
Ariochоператор изменённую запись записывает в свободное место на следующую страницу. Так не бывает. Запись привязана к странице и не может перемещаться, поэтому natural не зациклится хоть его режь. Единственный способ зациклить простой update это получить ему plan index или order по индексу на изменяемом поле. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2018, 13:10 |
|
Изменить все строки поля типа integer на заданную величину максимально быстро
|
|||
---|---|---|---|
#18+
AriochНе может ли так получиться, что update вставит новую версию записи в свободное место впереди курсора, после чего бегущий fullscan'ом цикл снова на нее наткнётся?Физическая запись никогда не меняет своего адреса. Она его получает при insert и освобождает только после delete + сборка мусора. Апдейт создаёт бекверсии, но голова цепочки версий всегда живёт по старому адресу. Поэтму fullscan мог зациклиться, только если создаются новые записи (insert into t select from t). Т.е. update\delete + fullscan - не может зациклиться. AriochВроде краем уха слышал, что записи помечались, что они изменены текущим оператором, чтобы этого избежатьНе так, но меры в 3-ке приняты и подобных побочных эффектов там нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2018, 13:22 |
|
Изменить все строки поля типа integer на заданную величину максимально быстро
|
|||
---|---|---|---|
#18+
hvladАпдейт создаёт бекверсии, но голова цепочки версий всегда живёт по старому адресу. ага, понятно, это я видимо после недавней статьи PostgresSQL vs InnoDB попутал но тут тоже неполнятно, ведь записи в FB пакуются побайтово в RLE это означает, что обновлённая запись может оказаться менее удачной для RLE и после упаковки стать длиннее старой версии, и просто "не влезть" в местое, которое занимала старая запись? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2018, 13:34 |
|
Изменить все строки поля типа integer на заданную величину максимально быстро
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЗапись привязана к странице и не может перемещаться а если изменённая запись стала длиннее (после упаковки, в байтах), а не странице свободного места нет ? Будут другие записи выноситься на другие страницы ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2018, 13:35 |
|
Изменить все строки поля типа integer на заданную величину максимально быстро
|
|||
---|---|---|---|
#18+
Arioch, если для нового образа первичной версии нет места на странице, она будет фрагментированна и часть её переползёт на другую страницу. Но голова всё равно останется на месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2018, 13:41 |
|
Изменить все строки поля типа integer на заданную величину максимально быстро
|
|||
---|---|---|---|
#18+
hvlad, ага, так понятно, спасибо сразу появляется тролльское желание зарезать кэш БД в ровно одну страницу и попробовать вычитать такую запись, сможет ли сервер разумно обработать такую ошибку ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2018, 13:43 |
|
Изменить все строки поля типа integer на заданную величину максимально быстро
|
|||
---|---|---|---|
#18+
Ariochсразу появляется тролльское желание зарезать кэш БД в ровно одну страницуЕсть ограничение снизу = 50 страниц ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2018, 14:10 |
|
Изменить все строки поля типа integer на заданную величину максимально быстро
|
|||
---|---|---|---|
#18+
hvlad, можно сказать, что уползание головы на другую страницу и/или на другое место в той же странице (в любой момент, по любой причине) - проявляется как изменение RDB$DB_KEY ? Что это один и тот же процесс ? И соотв. читая рассуждения про как-бы-стабильность значений RDB$DB_KEY можно оценить, в каких случаях головы ползают, а в каких остаются на месте ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2018, 15:48 |
|
Изменить все строки поля типа integer на заданную величину максимально быстро
|
|||
---|---|---|---|
#18+
Arioch что уползание головы на другую страницу и/или на другое место в той же странице (в любой момент, по любой причине) - проявляется как изменение RDB$DB_KEY НЕТ. Ну что за попытки ересь какую-то сочинить. rdb$db_key - это номер записи, той самой головы, про которую hvlad уже два раза сказал. Arioch в каких случаях головы ползают ни в каких. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2018, 15:50 |
|
Изменить все строки поля типа integer на заданную величину максимально быстро
|
|||
---|---|---|---|
#18+
RDB$DB_KEY состоит из номера страницы и положения записи на ней. Выводы сделать сумеешь? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2018, 15:51 |
|
Изменить все строки поля типа integer на заданную величину максимально быстро
|
|||
---|---|---|---|
#18+
kdvArioch в каких случаях головы ползают ни в каких.Именно так ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2018, 16:04 |
|
Изменить все строки поля типа integer на заданную величину максимально быстро
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, если тебя и KDV объединить, то получается, что RDB$DB_KEY не меняется никогда. а это не так, иначе бы его использовали вместо синтетических ПК и не парились например, из известной статьи This also leads well to a discussion why you cannot rely on the record position to persist 1) after a backup/restore 2) or after your transaction has committed ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2018, 19:37 |
|
Изменить все строки поля типа integer на заданную величину максимально быстро
|
|||
---|---|---|---|
#18+
Arioch1) after a backup/restore 2) or after your transaction has committed первое верно, потому что надо понимать, что такое restore (и это просто инсерт) а второе - чешуя. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2018, 19:53 |
|
Изменить все строки поля типа integer на заданную величину максимально быстро
|
|||
---|---|---|---|
#18+
после коммита может быть собран мусор (после удаления записи) и на это же место может попасть другая запись, есс-но с тем же RDB$DB_KEY. Это как раз и нарушает его "стабильность", если держать ссылку "за щекой" между транзакциями - она может протухнуть. Но у одной и той же записи RDB$DB_KEY не меняется никогда, заголовок записи не имеет права перемещаться (на самом деле - может внутри страницы, но это уже детали). Вот и все. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2018, 20:00 |
|
Изменить все строки поля типа integer на заданную величину максимально быстро
|
|||
---|---|---|---|
#18+
Arioch, с точки зрения пользователя, и вообще всех "снаружи" движка - запись идентифицирует её PK и только PK. Для движка запись идентифицирует DB_KEY. Никогда не путай эти понятия, они не обязаны никак соответствовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2018, 21:00 |
|
|
start [/forum/topic.php?fid=40&gotonew=1&tid=1561136]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
10ms |
get first new msg: |
8ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 304ms |
total: | 456ms |
0 / 0 |