powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Необходимость обновления столбца, только что добавленного в таблицу с данными
25 сообщений из 32, страница 1 из 2
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38409835
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если таблица с кучей данных. В нее нужно добавить столбец вида
Код: sql
1.
alter table MY_TABLE add NEW_FIELD blob sub_type 1 segment size 8192 character set UTF8 default '12345' not null


Если выполнять это действие "визуально", щелкая мышкой в IBExpert на вкладке со структурой таблицы, но "умный" эксперт после добавления столбца рассказывает страшную сказку с эпилогом о том, что необходимо следом пульнуть запрос вида:
Код: sql
1.
update MY_TABLE set NEW_FIELD='12345'


При этом, если отменить такую "инициализацию", ограничившись одним alter'ом то при переключении на вкладку Данные прекрасно отображается и новый столбец, и (для уже существующих в таблице строк) дефолтные данные "12345" в нем.

Потому вопрос - нужно ли принудительное обновление уже существующих строк дефолтным значением при добавлении в таблицу нового столбца с параметрами "NOT NULL" и "DEFAULT xxx"?

зы. вопрос навеян тем, что Firebird 2.5.2 на не самом медленном SSD уже часов 10 пытается вот так вот обновить по "подсказке" эксперта добавленный в крупную табличку (млн 60 строк) столбец, сожрав при этом 10 ГБ памяти. и х.з. когда он закончит...
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38409863
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BLOB с дефолтом? Ну, вы, батенька, изверг...

fd00chнужно ли
Нужно. То, что ты видишь на вкладке данных это призраки. Сменишь дефолт они тоже поменяются.

fd00chFirebird 2.5.2 на не самом медленном SSD уже часов 10 пытается вот так вот
обновить по "подсказке" эксперта добавленный в крупную табличку (млн 60 строк) столбец
Ну так тебе повезло, что это не Оракул.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38409883
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovBLOB с дефолтом? Ну, вы, батенька, изверг...а в чем проблема? и какая разница, будет столбец INTEGER'нутый или VARCHAR'нутый?

Dimitry SibiryakovНужно. То, что ты видишь на вкладке данных это призраки. Сменишь дефолт они тоже поменяются.А если после добавления такого столбца (без апдейста старых строк) сделать b/r - для блобов в новом столбце выделятся реальные blob id?
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38409898
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fd00chа в чем проблема? и какая разница, будет столбец INTEGER'нутый или
VARCHAR'нутый?
BLOB-ы хранятся и обрабатываются совсем не так как остальные типы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38409900
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fd00ch сделать b/r - для блобов в новом столбце выделятся реальные blob id?
ты добавил столбец not null. но данных в нем нет. Фактически null.
С какой радости при бэкапе-ресторе вдруг твои null превратятся в default, непонятно.
Default - это значение, используемое при отсутствии упоминания столбца в insert.
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38409909
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvС какой радости при бэкапе-ресторе вдруг твои null превратятся в default, непонятно.у вдруг? :)
зы. в реальности default - это пустые строки
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38409928
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fd00chА если после добавления такого столбца (без апдейста старых строк) сделать b/r - для блобов в новом столбце выделятся реальные blob id?Да

kdvС какой радости при бэкапе-ресторе вдруг твои null превратятся в default, непонятно.Бекап читает данные так же, как и любой другой клиент.
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38409946
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladfd00chА если после добавления такого столбца (без апдейста старых строк) сделать b/r - для блобов в новом столбце выделятся реальные blob id?Даполучается, при этом обновление существующих строк в новом столбце будет "бесплатным", ведь время бекапа или рестора не увеличится после приведенного alter'а на 10+ часов?

к тому же на b/r после такого изменения структуры я, похоже, все равно попадаю, ибо Firebird как-то нехорошо начинает тормозить после внесения таких правок в таблицу (и в итоге - простой на 12 часов для update + 2 часа на backup + 4-6 часов на restore)
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38409969
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fd00ch,

если ты не собираешься менять этот default, то я вообще не вижу причин для update'а

fd00chFirebird как-то нехорошо начинает тормозить после внесения таких правок в таблицуФакты есть ?
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38409985
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladесли ты не собираешься менять этот default, то я вообще не вижу причин для update'ану, с учетом полученных знания - я тоже))hvladФакты есть ?если до ночи таблица успеет апдейтнуться - посмотрю, сколько занимает типичные мелкие вставки и апдейты из клиентского софта (по сравнению с доапдейченной и ресторнутой таблицей)
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38409989
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но бекап такой базы (читай - селект), имхо, будет все же дольше))
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38410008
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тебе ещё одно соображение, для полноты картины:

при чтении строк с реально отсутствующим значением блоба, движок создаёт временные блобы для подстановки default значения.
Есс-но, если это поле участвует в запросе. Много временных блобов может быть больно, ты это видишь на примере своего апдейта.
Т.е. если ты намерен читать много записей из этой таблицы в каком-то запросе и в нём будет упомянуто поле с блобом, то нужно хорошо подумать о необходимости апдейта...
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38410025
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladФакты есть ?
Чисто спекуляция: из-за короткого значения блоба, оно сохраняется прямо в записи, но
резерв места на странице недостаточен или вообще отсутствует, поэтому начинается
фрагментация записей. А перенести существующую запись на другую страницу целиком Firebird
не умеет. Вывод: значительное увеличение размера записи в набитой таблице лучше делать
через создание новой таблицы с копированием записей туда.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38410026
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladМного временных блобов может быть больно, ты это видишь на примере своего апдейта.тогда уж бекапа

а вообще, что движок делает при таком обновлении столбца? почему апдейт 1 столбца в 60 млн строк занимает 10+ часов, при этом (по показаниям Диспетчера задач) сервер вычитал с диска в 1.5 раз больше данных, чем занимает база и раза в 3 больше, чем занимает таблица? на обновляемом столбце индексов нет, другие индексы в базе (которых больше десятка) не модифицируются при этом?
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38410038
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gstat -h -r -t ТВОЯ_ТАБЛИЦА - В СТУДИЮ!!!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38410041
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, а можно я дождусь, пока апдейт доработает?))
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38410042
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЧисто спекуляция: из-за короткого значения блоба, оно сохраняется прямо в записиИменно спекуляция - никакие блобы никогда не сохраняются прямо в записи. Уж сколько раз говорили об этом.
Блоб - это отдельная запись. Всегда.
В записи таблицы сохраняется blob_id (который есть номер записи блоба) и всё.
Dimitry Sibiryakovрезерв места на странице недостаточен или вообще отсутствует, поэтому начинается
фрагментация записей.Это вполне возможно. Но блобы тут не при чём. Этого можно добиться и апдейтом пустой\короткой строки более длинным значением.
Dimitry SibiryakovВывод: значительное увеличение размера записи в набитой таблице лучше делать
через создание новой таблицы с копированием записей туда.Высосан из пальца. Может быть лучше, а может и не быть лучше.
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38410047
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fd00chа можно я дождусь, пока апдейт доработает?))
А зачем? Да и к тому же: ты ведь сделал резервную копию базы перед своими экспериментами?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38410054
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
любопытства ради: это понятиеDimitry Sibiryakovфрагментация записейа также "нулевая польза от высокоселективных индексов" для SSD разве актуальны?
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38410057
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fd00chа вообще, что движок делает при таком обновлении столбца?Ты не поверишь - апдейт :)
fd00chпочему апдейт 1 столбца в 60 млн строк занимает 10+ часов, при этом (по показаниям Диспетчера задач) сервер вычитал с диска в 1.5 раз больше данных, чем занимает база и раза в 3 больше, чем занимает таблица?Значит некоторые страницы читаются и вытесняются из кеша многократно.
Почему именно 10 часов - не могу сказать, отсюда не видно что там ещё мешает
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38410058
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladникакие блобы никогда не сохраняются прямо в записи. Уж сколько раз говорили
об этом.

Всегда говорили об обратном: "блоб нулевого уровня хранится вместе с записью на странице
данных, первого - на отдельной странице, второго - в массиве отдельных страниц".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38410061
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВсегда говорили об обратном: "блоб нулевого уровня хранится вместе с записью на странице
данныхВместе - не значит внутри. Тут акцент на типе страницы для хранения блоба.
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38410063
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovfd00chа можно я дождусь, пока апдейт доработает?))
А зачем? Да и к тому же: ты ведь сделал резервную копию базы перед своими экспериментами?..можно я не буду отвечать на эти вопросы?)) в теории бекап есть, но там свои ошибки, вызванные запуском write-транзакций при аналогичном добавлении и обновлении другого столбца
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38410067
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladТы не поверишь - апдейт :)действительно, поверить сложно. перефразирую тогда: движок при апдейте столбца не меняет другие, т.е. не модифицирует индексы, которые на них наложены?
...
Рейтинг: 0 / 0
Необходимость обновления столбца, только что добавленного в таблицу с данными
    #38410076
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fd00chможно я не буду отвечать на эти вопросы?
В идеале нужно смотреть gstat -r до и после апдейта. Но сейчас ты можешь ограничиться
показом gstat -h.

hvladВместе - не значит внутри. Тут акцент на типе страницы для хранения блоба.
В данном случае вроде как разницы никакой: если апдейт первых записей на странице сожрал
всё резервное пространство блобами нулевого уровня, то при апдейте остальных записей блобы
повалятся на отдельные страницы + на другие отдельные страницы повалятся фрагменты этих
записей. Нет?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Необходимость обновления столбца, только что добавленного в таблицу с данными
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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