powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / DBMS_PARALLEL_EXECUTE OVER PARTITION
6 сообщений из 6, страница 1 из 1
DBMS_PARALLEL_EXECUTE OVER PARTITION
    #39544294
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть необходимость задействовать DBMS_PARALLEL_EXECUTE для сканирования единственной партиции таблицы.
Не ясно каким образом в данном случае следует создавать чанки (очевидно, самый выгодный подход для обычных таблиц - DBMS_PARALLEL_EXECUTE::CREATE_CHUNKS_BY_ROWID - не предусматривает работу с одиночными партициями).
Кроме того, CREATE_CHUNKS_BY_ROWID не возможно использовать после перемещения партиции (ALTER TABLE EXCHANGE PARTITION) ввиду ошибки: INVALID_TABLE, ORA-29491, "Attempts to chunk a table by rowid in cases in which the table is not a physical table, or the table is an IOT".
Можно воспользоваться CREATE_CHUNKS_BY_NUMBER_COL, но это очень долго при больших объемах данных (десятки миллионов строк в партиции, десятки партиций).
Что-то ниже спины подсказывает мне, что CREATE_CHUNKS_BY_SQL - то, что мне нужно, но я не знаю как написать запрос для разбиения партиции на чанки по заданному количеству ROWID.
Подскажите, пожалуйста, люди
...
Рейтинг: 0 / 0
DBMS_PARALLEL_EXECUTE OVER PARTITION
    #39544781
ITest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--Eugene--,

камрад, теоретически можно извратиться в этом направлении:
Код: plsql
1.
2.
3.
SELECT distinct UPPER(SUBSTR(ROWID,-1)) FROM ...
SELECT distinct UPPER(SUBSTR(ROWID,-2)) FROM ...
...



правда, количество чанков будет плавающим от запроса к запросу...

с ув. IT
...
Рейтинг: 0 / 0
DBMS_PARALLEL_EXECUTE OVER PARTITION
    #39544791
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--очевидно, самый выгодный подход для обычных таблиц - DBMS_PARALLEL_EXECUTE::CREATE_CHUNKS_BY_ROWID - не предусматривает работу с одиночными партициямиЭто только тебе очевидно.

Раз (create_chunks_by_sql)
параллельное выполнение процедур
Два (create_chunks_by_number_col)
DBMS_PARALLEL_EXECUTE
...
Рейтинг: 0 / 0
DBMS_PARALLEL_EXECUTE OVER PARTITION
    #39544865
--Eugene--,

Для получения rowid'а не обязательно лезть в таблицу, его можно сочинить с помощью dbms_rowid.rowd_create.
...
Рейтинг: 0 / 0
DBMS_PARALLEL_EXECUTE OVER PARTITION
    #39544884
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

если Вы о драматической деградации перформанса (скатывания практически до последовательного исполнения), я в курсе сего феномена (и работаю как раз на 11.2.0.4). На тот момент я не знал, что это баг, и сделал вывод, что использование CREATE_CHUNKS_BY_NUMBER_COL не спасет ситуацию, тем более, что сам способ разбиения по колонке (в противоположность разбиению по ROWID), насколько я понимаю, занимает гораздо больше времени (не прав?).
И да, это-таки лечится? (имеется в виду 18379323 )
...
Рейтинг: 0 / 0
DBMS_PARALLEL_EXECUTE OVER PARTITION
    #39545319
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--если Вы о драматической деградации перформансаНет, я про разбиение на подзадачи различными способами.
В скобочках были указаны соответствующие методы.
Разбиение должно быть таким, чтоб во-первых подзадачи покрывали необходимое тебе множество, а во-вторых были примерно равными по объему.
--Eugene--сам способ разбиения по колонке (в противоположность разбиению по ROWID), насколько я понимаю, занимает гораздо больше времени (не прав?)Время на разбиением любым из способов весьма мало и вообще им можно пренебречь по сравнению со временем на выполнение.
Не совсем понятно откуда берутся твои домыслы. Всё же проверяемо.
--Eugene--И да, это-таки лечится? (имеется в виду 18379323 )Если цель чтоб на очень малых объемах было желаемое число подзадач, то можно прикрутить самостоятельное разбиение на подзадачи.
С помощью того же dbms_job. Elic приводил код.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / DBMS_PARALLEL_EXECUTE OVER PARTITION
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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