Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ALTER TABLE + REORG
|
|||
|---|---|---|---|
|
#18+
Коллеги, добрый день Помогите советом. Встала необходимость добавить много полей в таблички огромного размера (сотни миллионов строк) Посмотрел доки по db2, рекомендуют запускать реорг. Вопрос, реорг запускается с параметрами темпспейсов, а что если не указывать?? И что именно в этих спейсах происходит? хранение полученных данных или типо хипа на время реорга? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2015, 11:15 |
|
||
|
ALTER TABLE + REORG
|
|||
|---|---|---|---|
|
#18+
kT_________, Добрый день. REORG INDEXES/TABLE command : USE tbspace-name Specifies the name of a system temporary table space in which to store a temporary copy of the table being reorganized. If you do not provide a table space name, the database manager stores a working copy of the table in the table spaces that contain the table being reorganized. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2015, 13:54 |
|
||
|
ALTER TABLE + REORG
|
|||
|---|---|---|---|
|
#18+
kT_________, В темпспейсе будет формироваться таблица и индексы в новом "хорошем" виде. Потом копироваться обратно. Может быть супер-эффективно, если темпспейс на другом девайсе, а на исходное - не SSD based (одновременное чтение/запись сильно тормозят общий transfer rate). Можете запустить и так и так, и посмотреть, что будет идти на первых фазах reorg'а (sort/build) с помощью: Код: plaintext Предположение - копирование обратно должно производиться экстентами == потоковым чтением-записью, т.е. существенно быстрее, чем собственно сам "reorg" таблицы, действительно в операции reorg нуждающейся. Второй момент. При использовании темпспэйса последующее копирование производится _поверх_ существующей таблицы == не требует дополнительного пространства в размере самой таблицы в исходном tablespace (что важно для сверхбольших таблиц). При реорге "на месте" обратное копирование не производится, а просто производится "подмена". В DMS табличных пространствах при этом остаётся свободное место в начале пространства (если экстенты исходно были "плотно упакованы"), которое, впрочем, при желании тоже можно отдать системе - LOWER HIGH WATER MARK + (когда extent'ы смувятся) REDUCE MAX; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2015, 14:19 |
|
||
|
ALTER TABLE + REORG
|
|||
|---|---|---|---|
|
#18+
CawaSPb, Круто! Только вот про индексы, я то думаю если я просто поля добавляю и они не индексными будут, то мне достаточно реорга таблички, и не надо делать reorg indexes for table <Tab>, достаточно reorg table <Tab>, верно? И вот ещё оч интересный вопрос)) Я накатываю всё на БД скриптами, есть возможность распараллелить, но таблички реально огромные, и лежат все в одном тейблспейсе, и индексы все в одном индексспейсе (но индексы не трогаем, ок). Так вот вопрос: Что бы было побыстрее я распараллеливаю реорг табличек, и делаю например пачками, это чревато?? т..е может ли например нехватить места в тейблспейсах при таком подходе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2015, 15:24 |
|
||
|
ALTER TABLE + REORG
|
|||
|---|---|---|---|
|
#18+
kT_________, *не хватить места в темпспейсах* ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2015, 15:28 |
|
||
|
ALTER TABLE + REORG
|
|||
|---|---|---|---|
|
#18+
короче говоря, хочется распараллелить реорги, и что бы не разорвало спейсы. вероятно если я не указываю для реорга темпспейс какой-то особенный, то он использует по умолчанию.. и тогда если идет параллельный реорг, то тоже и не хватить этого темпспейса, всё так? если да, то как прикинуть место??? и заранее составить пачки таким образом что бы они паралельно влазили в темпспейс? илиэто всё как-то иначе делается? Огромное спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2015, 15:31 |
|
||
|
ALTER TABLE + REORG
|
|||
|---|---|---|---|
|
#18+
kT_________Только вот про индексы, я то думаю если я просто поля добавляю и они не индексными будут, то мне достаточно реорга таблички, и не надо делать reorg indexes for table <Tab>, достаточно reorg table <Tab>, верно? Нет, неверно. Реорг изменяет порядок расположения строк в таблице и/или их расположение в страницах, поэтому при реорганизации таблиц реорг индексов выполняется всегда (отдельной фазой реорга). Индексы при этом просто полностью перестраиваются заново. Что бы было побыстрее я распараллеливаю реорг табличек, и делаю например пачками, это чревато?? т..е может ли например нехватить места в тейблспейсах при таком подходе? Не хватить места - ну да, может. Все данные для правильной калькуляции у Вас в руках. Основная фаза реорганизации (build)... Я бы предположил, что теоретически параллельное чтение из нескольких таблиц при правильно выбраном размере экстента (если чтение при реорге происходит экстентами (тут вупрос к Марку)) в лучшем случае не будет замедлять общего transfer rate. Тем не менее, практика - критерий истины. Запустите один реорг (с долгими реоргами у вас проблем быть не должно ;)), затем добавляйте по одному и смотрите, пока общая скорость по CurCount в фазе Build не выйдет на порог насыщения (по "db2pd -db <dbname> -reorgs"). Получите оптимальное количество параллельно выполняемых реоргов. Вполне возможно это будет 1 (т.е. быстрее выполнять будет строго последовательно). вероятно если я не указываю для реорга темпспейс какой-то особенный, то он использует по умолчанию.. и тогда если идет параллельный реорг, то тоже и не хватить этого темпспейса, всё так? Нет. Если не использовать USE clause, то при при reorg'е таблица (как и индексы) складываются в текущее же табличное пространство ("рядом" с другими таблицами/данными). PS Полезый запрос по LARGE табличным пространствам: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. с последующими группировками по полям таблицы. Повертев данными, можно посмотреть распределение "однородных" записей по страницам и понять (если данные более-менее статичны, что для больших таблиц часто верно), стоит ли таблицу упорядочивать при реоргинизации по полю/набору полей (но при этом не делать какой-либо из индексов кластерным). Организуя таким образом некоторый co-location данных на уровне страниц можно значительно увеличить скорость работы некоторого "профильного" набора запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2015, 19:57 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=39017626&tid=1600760]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
78ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 16ms |
| total: | 193ms |

| 0 / 0 |
