|
|
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
Если таблица с кучей данных. В нее нужно добавить столбец вида Код: sql 1. Если выполнять это действие "визуально", щелкая мышкой в IBExpert на вкладке со структурой таблицы, но "умный" эксперт после добавления столбца рассказывает страшную сказку с эпилогом о том, что необходимо следом пульнуть запрос вида: Код: sql 1. При этом, если отменить такую "инициализацию", ограничившись одним alter'ом то при переключении на вкладку Данные прекрасно отображается и новый столбец, и (для уже существующих в таблице строк) дефолтные данные "12345" в нем. Потому вопрос - нужно ли принудительное обновление уже существующих строк дефолтным значением при добавлении в таблицу нового столбца с параметрами "NOT NULL" и "DEFAULT xxx"? зы. вопрос навеян тем, что Firebird 2.5.2 на не самом медленном SSD уже часов 10 пытается вот так вот обновить по "подсказке" эксперта добавленный в крупную табличку (млн 60 строк) столбец, сожрав при этом 10 ГБ памяти. и х.з. когда он закончит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 13:58:33 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
BLOB с дефолтом? Ну, вы, батенька, изверг... fd00chнужно ли Нужно. То, что ты видишь на вкладке данных это призраки. Сменишь дефолт они тоже поменяются. fd00chFirebird 2.5.2 на не самом медленном SSD уже часов 10 пытается вот так вот обновить по "подсказке" эксперта добавленный в крупную табличку (млн 60 строк) столбец Ну так тебе повезло, что это не Оракул. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 14:09:15 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovBLOB с дефолтом? Ну, вы, батенька, изверг...а в чем проблема? и какая разница, будет столбец INTEGER'нутый или VARCHAR'нутый? Dimitry SibiryakovНужно. То, что ты видишь на вкладке данных это призраки. Сменишь дефолт они тоже поменяются.А если после добавления такого столбца (без апдейста старых строк) сделать b/r - для блобов в новом столбце выделятся реальные blob id? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 14:17:21 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
fd00chа в чем проблема? и какая разница, будет столбец INTEGER'нутый или VARCHAR'нутый? BLOB-ы хранятся и обрабатываются совсем не так как остальные типы. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 14:25:50 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
fd00ch сделать b/r - для блобов в новом столбце выделятся реальные blob id? ты добавил столбец not null. но данных в нем нет. Фактически null. С какой радости при бэкапе-ресторе вдруг твои null превратятся в default, непонятно. Default - это значение, используемое при отсутствии упоминания столбца в insert. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 14:27:21 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
kdvС какой радости при бэкапе-ресторе вдруг твои null превратятся в default, непонятно.у вдруг? :) зы. в реальности default - это пустые строки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 14:34:00 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
fd00chА если после добавления такого столбца (без апдейста старых строк) сделать b/r - для блобов в новом столбце выделятся реальные blob id?Да kdvС какой радости при бэкапе-ресторе вдруг твои null превратятся в default, непонятно.Бекап читает данные так же, как и любой другой клиент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 14:44:16 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
hvladfd00chА если после добавления такого столбца (без апдейста старых строк) сделать b/r - для блобов в новом столбце выделятся реальные blob id?Даполучается, при этом обновление существующих строк в новом столбце будет "бесплатным", ведь время бекапа или рестора не увеличится после приведенного alter'а на 10+ часов? к тому же на b/r после такого изменения структуры я, похоже, все равно попадаю, ибо Firebird как-то нехорошо начинает тормозить после внесения таких правок в таблицу (и в итоге - простой на 12 часов для update + 2 часа на backup + 4-6 часов на restore) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 14:49:51 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
fd00ch, если ты не собираешься менять этот default, то я вообще не вижу причин для update'а fd00chFirebird как-то нехорошо начинает тормозить после внесения таких правок в таблицуФакты есть ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 14:58:27 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
hvladесли ты не собираешься менять этот default, то я вообще не вижу причин для update'ану, с учетом полученных знания - я тоже))hvladФакты есть ?если до ночи таблица успеет апдейтнуться - посмотрю, сколько занимает типичные мелкие вставки и апдейты из клиентского софта (по сравнению с доапдейченной и ресторнутой таблицей) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 15:05:58 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
но бекап такой базы (читай - селект), имхо, будет все же дольше)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 15:07:37 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
Вот тебе ещё одно соображение, для полноты картины: при чтении строк с реально отсутствующим значением блоба, движок создаёт временные блобы для подстановки default значения. Есс-но, если это поле участвует в запросе. Много временных блобов может быть больно, ты это видишь на примере своего апдейта. Т.е. если ты намерен читать много записей из этой таблицы в каком-то запросе и в нём будет упомянуто поле с блобом, то нужно хорошо подумать о необходимости апдейта... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 15:18:30 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
hvladФакты есть ? Чисто спекуляция: из-за короткого значения блоба, оно сохраняется прямо в записи, но резерв места на странице недостаточен или вообще отсутствует, поэтому начинается фрагментация записей. А перенести существующую запись на другую страницу целиком Firebird не умеет. Вывод: значительное увеличение размера записи в набитой таблице лучше делать через создание новой таблицы с копированием записей туда. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 15:28:19 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
hvladМного временных блобов может быть больно, ты это видишь на примере своего апдейта.тогда уж бекапа а вообще, что движок делает при таком обновлении столбца? почему апдейт 1 столбца в 60 млн строк занимает 10+ часов, при этом (по показаниям Диспетчера задач) сервер вычитал с диска в 1.5 раз больше данных, чем занимает база и раза в 3 больше, чем занимает таблица? на обновляемом столбце индексов нет, другие индексы в базе (которых больше десятка) не модифицируются при этом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 15:28:40 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
gstat -h -r -t ТВОЯ_ТАБЛИЦА - В СТУДИЮ!!! Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 15:36:01 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, а можно я дождусь, пока апдейт доработает?)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 15:37:10 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЧисто спекуляция: из-за короткого значения блоба, оно сохраняется прямо в записиИменно спекуляция - никакие блобы никогда не сохраняются прямо в записи. Уж сколько раз говорили об этом. Блоб - это отдельная запись. Всегда. В записи таблицы сохраняется blob_id (который есть номер записи блоба) и всё. Dimitry Sibiryakovрезерв места на странице недостаточен или вообще отсутствует, поэтому начинается фрагментация записей.Это вполне возможно. Но блобы тут не при чём. Этого можно добиться и апдейтом пустой\короткой строки более длинным значением. Dimitry SibiryakovВывод: значительное увеличение размера записи в набитой таблице лучше делать через создание новой таблицы с копированием записей туда.Высосан из пальца. Может быть лучше, а может и не быть лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 15:37:18 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
fd00chа можно я дождусь, пока апдейт доработает?)) А зачем? Да и к тому же: ты ведь сделал резервную копию базы перед своими экспериментами?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 15:38:46 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
любопытства ради: это понятиеDimitry Sibiryakovфрагментация записейа также "нулевая польза от высокоселективных индексов" для SSD разве актуальны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 15:41:39 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
fd00chа вообще, что движок делает при таком обновлении столбца?Ты не поверишь - апдейт :) fd00chпочему апдейт 1 столбца в 60 млн строк занимает 10+ часов, при этом (по показаниям Диспетчера задач) сервер вычитал с диска в 1.5 раз больше данных, чем занимает база и раза в 3 больше, чем занимает таблица?Значит некоторые страницы читаются и вытесняются из кеша многократно. Почему именно 10 часов - не могу сказать, отсюда не видно что там ещё мешает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 15:43:42 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
hvladникакие блобы никогда не сохраняются прямо в записи. Уж сколько раз говорили об этом. Всегда говорили об обратном: "блоб нулевого уровня хранится вместе с записью на странице данных, первого - на отдельной странице, второго - в массиве отдельных страниц". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 15:44:20 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovВсегда говорили об обратном: "блоб нулевого уровня хранится вместе с записью на странице данныхВместе - не значит внутри. Тут акцент на типе страницы для хранения блоба. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 15:45:51 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovfd00chа можно я дождусь, пока апдейт доработает?)) А зачем? Да и к тому же: ты ведь сделал резервную копию базы перед своими экспериментами?..можно я не буду отвечать на эти вопросы?)) в теории бекап есть, но там свои ошибки, вызванные запуском write-транзакций при аналогичном добавлении и обновлении другого столбца ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 15:46:04 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
hvladТы не поверишь - апдейт :)действительно, поверить сложно. перефразирую тогда: движок при апдейте столбца не меняет другие, т.е. не модифицирует индексы, которые на них наложены? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 15:48:47 |
|
||
|
Необходимость обновления столбца, только что добавленного в таблицу с данными
|
|||
|---|---|---|---|
|
#18+
fd00chможно я не буду отвечать на эти вопросы? В идеале нужно смотреть gstat -r до и после апдейта. Но сейчас ты можешь ограничиться показом gstat -h. hvladВместе - не значит внутри. Тут акцент на типе страницы для хранения блоба. В данном случае вроде как разницы никакой: если апдейт первых записей на странице сожрал всё резервное пространство блобами нулевого уровня, то при апдейте остальных записей блобы повалятся на отдельные страницы + на другие отдельные страницы повалятся фрагменты этих записей. Нет?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 15:50:57 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38409898&tid=1564282]: |
0ms |
get settings: |
14ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
67ms |
get topic data: |
17ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 209ms |
| total: | 417ms |

| 0 / 0 |
