|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
Добрый день! Ситуация в принципе ожидаемая, но тем не менее не ожидал такого значения времени исполнения. 1. FB 2.5 Имеем таблицу 20 млн записей. 6 полей. 2. Добавляем поле integer 3. Инициализируем поле значением. выполнение этой операции заняло 3 часа. FW=OFF Делаем после добавления поля backup/restore инициализация поля 96 секунд. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2017, 08:57 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
Без показателей кол-ва мусора "до" и "после" будет гадание на кофейной гуще. но тем не менее рекомендуется сунуть свип в крон в моменты наименьшей нагрузки на сервер. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2017, 09:51 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
bazilio77Ситуация в принципе ожидаемая Чтобы ожидать такую ситуацию, DBA должен был сделать что-то совершенно безумное типа выставления флага no_reserve. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2017, 11:58 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
bazilio77инициализация поля имеется в виду update? Вообще до и после таких операций надо gstat -r делать, а если только конкретная таблица, то и -t. Но поскольку все это случается уже после того как - "мы сделали, а почему так получилось", то уже поздно. С другой стороны, как-то я не очень верю, что update 20млн записей после рестора проходит за 1 мин 36 секунд. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2017, 12:43 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
kdv, если у него там мусор накопился, то вполне реально ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2017, 12:44 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
kdvbazilio77инициализация поля имеется в виду update? Вообще до и после таких операций надо gstat -r делать, а если только конкретная таблица, то и -t. Но поскольку все это случается уже после того как - "мы сделали, а почему так получилось", то уже поздно. С другой стороны, как-то я не очень верю, что update 20млн записей после рестора проходит за 1 мин 36 секунд. Надо было наверное дополнить условия задачи. Вся эта ситуация проявляется при процедуре обновления БД. Наш сценарий обновления БД: 1. Резервное копирование средствами файловой системы 2. backup/restore 3. Прокручиваем кучу DDL и DML 4. backup/restore Что происходит с этой таблицей. 1. Создается 2. Вставляется 20 млн записей из других таблиц 3. Создаются индексы 4. update всех записей по одному полю 5. возня удалили добавили, изменили довольно много т.к между пунктом 1 и 6 куча ревизий с корректировкой данных в таблице 6. Добавили поле Integer 7. update 3 часа если backup/restore Statement executed in 96391 ms. Updates: 17684077 Deletes: 0 Inserts: 0 Selects: 17684077. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2017, 14:49 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
[quot bazilio77]kdvпропущено... если backup/restore Statement executed in 96391 ms. Updates: 17684077 Deletes: 0 Inserts: 0 Selects: 17684077. если backup/restore перед добавлением поля то 110 секунд ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2017, 14:50 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
Hello, Bazilio77! читай про MGA, про мусор, про его сборку. у тебя перед добавление поля плодится туева хуча версий. ты добавляешь поле. апдейтишь его, сервер "видит" мусор и начинает его по ходу апдейта собирать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2017, 15:06 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
bazilio77, проделай эту операцию с выключенной сборкой мусора ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2017, 15:19 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
bazilio775. возня удалили добавили, изменили довольно много т.к между пунктом 1 и 6 куча ревизий с корректировкой данных в таблице 6. Добавили поле Integer Сделать п.6 сразу после п.1 совсем не судьба?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2017, 15:41 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovbazilio775. возня удалили добавили, изменили довольно много т.к между пунктом 1 и 6 куча ревизий с корректировкой данных в таблице 6. Добавили поле Integer Сделать п.6 сразу после п.1 совсем не судьба?.. Нет не судьба. Т.к. скрипт инкрементальный делаем новую версию бд пишем как перевести бд из текущей версии в следующую, разница между 1 и 6 несколько лет. Просто у одного из клиентов нужно было обновить версию 2008 года. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2017, 15:50 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
Симонов Денисbazilio77, проделай эту операцию с выключенной сборкой мусора Не совсем понял это как? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2017, 15:56 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
bazilio77, isc_dpb_no_garbage_collect ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2017, 16:04 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
Симонов Денисbazilio77, isc_dpb_no_garbage_collect Не помогает. Только хуже получается, лезут очень интересные ошибки: CREATE SEQUENCE RCPREP_GEN; alter table RCPREP add concentrated BOOL default 0, add RCPREP_ID ID; update rcprep set rcprep_id = gen_id(rcprep_gen, 1), concentrated = iif(conc_pct <> 0, 1, 0); Statement executed in 2500 ms. Updates: 283446 Deletes: 0 Inserts: 0 Selects: 283446. ALTER TABLE RCPREP DROP CONSTRAINT RCPREP_PK, ADD CONSTRAINT UNQ1_RCPREP UNIQUE (RCP_ID,RAW_ID); ALTER TABLE RCPREP ADD CONSTRAINT PK_RCPREP PRIMARY KEY (RCPREP_ID); *** error *** FAILED: The insert failed because a column definition includes validation constraints.Validation error for column RCPREP_ID, value "*** null ***". Исходя из скрипта, такой ошибки не должно быть! Убираем sc_dpb_no_garbage_collect все нормально. При выполнении скрипта автокоммит после каждого выражения. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2017, 21:29 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2017, 22:47 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
bazilio77, это сто лет как известная фишка, в первую очередь при "переиспользовании" значений ПК " Possible scenario: tx1: insert key 1 tx1: rollback tx2: insert key 1 violation of PRIMARY or UNIQUE KEY constraint " insert в tx2 не собирает мусор от tx1, а ПК видит ключи от всех транзакций. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2017, 23:47 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
kdvbazilio77, это сто лет как известная фишка, в первую очередь при "переиспользовании" значений ПК " Possible scenario: tx1: insert key 1 tx1: rollback tx2: insert key 1 violation of PRIMARY or UNIQUE KEY constraint " insert в tx2 не собирает мусор от tx1, а ПК видит ключи от всех транзакций. Это хорошо. Но в сухом остатке получаем что пока только backup/restore в критичных точках большого может его ускорить. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 08:54 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
bazilio77Но в сухом остатке получаем что пока только backup/restore в критичных точках большого может его ускорить.Свип сделай перед "большим" ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 10:16 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
hvladbazilio77Но в сухом остатке получаем что пока только backup/restore в критичных точках большого может его ускорить.Свип сделай перед "большим" Свип из скрипта? "большой" значило большой скрипт. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 12:15 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
bazilio77Свип из скрипта?Ну бекап-рестор "из скрипта" тебя же не смущает ? И я так и не понял - ты обратил внимание, что CORE-5110 исправлен в 2.5.6 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 12:42 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
hvladbazilio77Свип из скрипта?Ну бекап-рестор "из скрипта" тебя же не смущает ? И я так и не понял - ты обратил внимание, что CORE-5110 исправлен в 2.5.6 ? Вопрос про свип был - есть ли стандартные средства по его вызову из скрипта. Расширить скрипт новым словом sweep_database не проблема.. Попробовал судя по всему свип не помогает, все равно update очень долго. Сейчас проверил 2.5.7.27050 embedded c no_garbage_collect The insert failed because a column definition includes validation constraints. validation error for column RCPREP_ID, value "*** null ***". ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 15:32 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
bazilio77, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
PS где у тебя commit после update ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 16:29 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
hvlad, тьфу, у тебя же isc_dpb_no_garbage_collect :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 16:30 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
bazilio77Вопрос про свип был - есть ли стандартные средства по его вызову из скрипта.shell gfix -sweep db; ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 16:33 |
|
Добавление поля в большую таблицу
|
|||
---|---|---|---|
#18+
hvladhvlad, тьфу, у тебя же isc_dpb_no_garbage_collect :)Впрочем, всё равно - нет ошибки. Попробовал с IBE - он понимает no_garbage_collect в доп. пар-рах коннекта. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 16:41 |
|
|
start [/forum/topic.php?fid=40&tid=1561627]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
159ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 276ms |
0 / 0 |