/*+ append*/ и партиционированные таблицы...

Dr. Simon
Дата: 28.02.2007 10:00:15
Всем доброе время суток... Небольшой вопрос:
если у меня есть таблица с range-партиционированием, куда постоянно производится куча insert'ов, имеет ли смысл использовать /*+ append*/ в таких инсертах (delet'ов нет вообще)? Есть ли разница в работе /*+ append*/ для партиционированной таблицы или обычной?
Q u a d r o
Дата: 28.02.2007 10:03:26
Как делаются инсерты?

/*+ append */ действует только на IAS и требует эксклюзивной блокировки на таблице. Это direct-path операция.
Dr. Simon
Дата: 28.02.2007 10:19:28
К величайшему моему сожалению, что такое IAS не знаю:(
Инсерты в таблицу выполняются некими функциями, которые вызываются в цикле, вставка идёт по одной записи. Одновременно могут работать несколько JOB, которые и производят эти INSERT'ы. Полагаю, если одновременно будут работать несколько JOB используя insert /*+ append*/ в эту таблицу, то из-за блокировок они могут тормозить друг друга?
wdkmc
Дата: 28.02.2007 10:21:32
Dr. Simon
К величайшему моему сожалению, что такое IAS не знаю:(
Инсерты в таблицу выполняются некими функциями, которые вызываются в цикле, вставка идёт по одной записи. Одновременно могут работать несколько JOB, которые и производят эти INSERT'ы. Полагаю, если одновременно будут работать несколько JOB используя insert /*+ append*/ в эту таблицу, то из-за блокировок они могут тормозить друг друга?
IAS = Insert As Select.
Если в цикле и по одной записи, то хинт APPEND просто игнорируется.
Dr. Simon
Дата: 28.02.2007 10:24:47
ок, про IAS понял...
а что будет с одновременными insert'ами если, волею судеб, сразу несколько JOB'ов будут работать?
Q u a d r o
Дата: 28.02.2007 10:32:56
Dr. Simon
ок, про IAS понял...
а что будет с одновременными insert'ами если, волею судеб, сразу несколько JOB'ов будут работать?

То же, что и с сессиями, пытающимися одновременно сделать lock table in exclusive mode - будут ждать на enqueue.
Dr. Simon
Дата: 28.02.2007 10:35:35
а когда блокировка в таком случае снимется - после commit или после окончания работы insert?
Q u a d r o
Дата: 28.02.2007 10:37:21
Dr. Simon
а когда блокировка в таком случае снимется - после commit или после окончания работы insert?


После завершения транзакции (commit / rollback).
Dr. Simon
Дата: 28.02.2007 10:40:26
блин:( придётся архитектуру системы переделывать...

Спасибо!
Q u a d r o
Дата: 28.02.2007 10:48:28
Dr. Simon
блин:( придётся архитектуру системы переделывать...

Спасибо!

Только для начала стоит убедиться, что append вообще нужен. Это не всегда fast=true.