powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / ALTER TABLE + REORG
7 сообщений из 7, страница 1 из 1
ALTER TABLE + REORG
    #39017453
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, добрый день

Помогите советом. Встала необходимость добавить много полей в таблички огромного размера (сотни миллионов строк)

Посмотрел доки по db2, рекомендуют запускать реорг.
Вопрос, реорг запускается с параметрами темпспейсов, а что если не указывать?? И что именно в этих спейсах происходит? хранение полученных данных или типо хипа на время реорга?
...
Рейтинг: 0 / 0
ALTER TABLE + REORG
    #39017604
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
...
Рейтинг: 0 / 0
ALTER TABLE + REORG
    #39017626
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kT_________,

В темпспейсе будет формироваться таблица и индексы в новом "хорошем" виде. Потом копироваться обратно.

Может быть супер-эффективно, если темпспейс на другом девайсе, а на исходное - не SSD based (одновременное чтение/запись сильно тормозят общий transfer rate).

Можете запустить и так и так, и посмотреть, что будет идти на первых фазах reorg'а (sort/build) с помощью:
Код: plaintext
db2pd -db <dbname> -reorgs
и решить, что будет быстрее.
Предположение - копирование обратно должно производиться экстентами == потоковым чтением-записью, т.е. существенно быстрее, чем собственно сам "reorg" таблицы, действительно в операции reorg нуждающейся.


Второй момент.
При использовании темпспэйса последующее копирование производится _поверх_ существующей таблицы == не требует дополнительного пространства в размере самой таблицы в исходном tablespace (что важно для сверхбольших таблиц).

При реорге "на месте" обратное копирование не производится, а просто производится "подмена". В DMS табличных пространствах при этом остаётся свободное место в начале пространства (если экстенты исходно были "плотно упакованы"), которое, впрочем, при желании тоже можно отдать системе - LOWER HIGH WATER MARK + (когда extent'ы смувятся) REDUCE MAX;
...
Рейтинг: 0 / 0
ALTER TABLE + REORG
    #39017745
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CawaSPb,

Круто!
Только вот про индексы, я то думаю если я просто поля добавляю и они не индексными будут, то мне достаточно реорга таблички, и не надо делать reorg indexes for table <Tab>, достаточно reorg table <Tab>, верно?


И вот ещё оч интересный вопрос))
Я накатываю всё на БД скриптами, есть возможность распараллелить, но таблички реально огромные, и лежат все в одном тейблспейсе, и индексы все в одном индексспейсе (но индексы не трогаем, ок). Так вот вопрос:

Что бы было побыстрее я распараллеливаю реорг табличек, и делаю например пачками, это чревато??
т..е может ли например нехватить места в тейблспейсах при таком подходе?
...
Рейтинг: 0 / 0
ALTER TABLE + REORG
    #39017754
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kT_________,

*не хватить места в темпспейсах*
...
Рейтинг: 0 / 0
ALTER TABLE + REORG
    #39017760
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
короче говоря, хочется распараллелить реорги, и что бы не разорвало спейсы.

вероятно если я не указываю для реорга темпспейс какой-то особенный, то он использует по умолчанию.. и тогда если идет параллельный реорг, то тоже и не хватить этого темпспейса, всё так?


если да, то как прикинуть место??? и заранее составить пачки таким образом что бы они паралельно влазили в темпспейс?
илиэто всё как-то иначе делается?
Огромное спасибо
...
Рейтинг: 0 / 0
ALTER TABLE + REORG
    #39018054
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
with t1 as (
 select SUBSTR(RID_BIT(T), 1, 2) MEMBER 
       ,SUBSTR(RID_BIT(T), 3, 4) PAGE
       ,SUBSTR(RID_BIT(T), 7, 2) ROW
       ,SUBSTR(RID_BIT(T), 9, 2) TAB
       ,SUBSTR(RID_BIT(T), 3, 8) FULL_ROW
       ,T.*
  from <tabname> T
),
...


с последующими группировками по полям таблицы.
Повертев данными, можно посмотреть распределение "однородных" записей по страницам и понять (если данные более-менее статичны, что для больших таблиц часто верно), стоит ли таблицу упорядочивать при реоргинизации по полю/набору полей (но при этом не делать какой-либо из индексов кластерным). Организуя таким образом некоторый co-location данных на уровне страниц можно значительно увеличить скорость работы некоторого "профильного" набора запросов.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / ALTER TABLE + REORG
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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