|
Вопрос по DBMS_PARALLEL_EXECUTE
|
|||
---|---|---|---|
#18+
Добрый день. Подскажите, пожалуйста, в какую сторону копать. Есть необходимость ускорить процесс орбаботки гигантской таблицы. Думаю использовать DBMS_PARALLEL_EXECUTE. Но в примерах сначала бьют на чанки всю таблицу, потом так же run_task по этим чанкам. Но мне не надо всю таблицу лопатить, обработать нужно строки по конкретному условию. Как правильнее сделать? 1) Воспользоваться DBMS_PARALLEL_EXECUTE.CREATE_CHUNKS_BY_SQL и в запросе указать в where нужные критерии отбора 2) Или dbms_parallel_execute.create_chunks_by_rowid и уже в обработке update поставить where нужные условия ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2019, 10:38 |
|
Вопрос по DBMS_PARALLEL_EXECUTE
|
|||
---|---|---|---|
#18+
4saken, Делаешь табличку: from_id_for_chunk, to_id_for_chunk, id_from_huge_table Наполняешь ее запросом и дальше (dml с джойнами или процедура) пилишь паралелями. Вопрос про консистентность - ну, ты в курсе. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2019, 10:56 |
|
Вопрос по DBMS_PARALLEL_EXECUTE
|
|||
---|---|---|---|
#18+
Если изменяемых данных не много, то 1+2, если почти вся таблица, то 2. Условия в where для update всё равно ставить надо, там же интервал на входе, нет никакой гарантии, что в этом интервале не окажется "ненужных" данных. Ещё имеет смысл посмотреть на Method 7 и 8: http://www.orafaq.com/node/2450. Но тут вроде Enterprise нужен, чтобы parallel работал... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2019, 11:01 |
|
|
start [/forum/topic.php?fid=52&msg=39767959&tid=1882850]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 335ms |
total: | 493ms |
0 / 0 |