Не уверен в отношении Oracle TM Contention, но я бы сказал, что обычно обе стороны отношения внешнего ключа индексируются. В противном случае база данных должна будет выполнять сканирование таблиц.
- Индекс родительской записи используется всякий раз, когда вы вставляете новую дочернюю запись, чтобы убедиться, что родитель существует. Часто это первичный ключ, так что, конечно, имеет индекс.
- Индекс дочерней записи используется всякий раз, когда вы меняете или удаляете родительскую запись, для выполнения каскадов (включая отказ от обновления/удаления).
Показатели с обеих сторон также дают базе данных хорошие шансы сделать быстрые (индексированные) соединения, независимо от того, с какой стороны его оптимизатор предпочитает исходить.
РЕДАКТОРА: Имея конфликты в Googled TM, похоже, что у вас, вероятно, отсутствуют ключи на дочерних записях. Но обязательно имейте их с обеих сторон.
EDIT 2: Ответ на комментарий,
Если у вас есть таблица OLTP, которая имеет 13 FKs для поиска таблиц, я не увлечена на 13 обновления индекса в дополнение к таблице, рк и любые другие индексы. Индекс важен, но по определенным причинам. Если вы никогда не добавляли , обновите родительский PK или удалите из родителя, индекс child не очень полезен. Или это?
Зависит от объединений и запросов, которые вы используете. Например, если вы запускаете запрос типа:
SELECT o.something
FROM oltp_tab o JOIN lookup l ON (o.lookup_no = l.lookup_no)
WHERE l.lookup_name = ?
оптимизатор запросов будет, вероятно, как индекс на ребенке записей.
Кроме того, в соответствии с http://ashmasters.com/waits/enq-tm-contention/ вы в значительной степени необходимо иметь индексы, если вы измените родительские таблицы, в всех. По-видимому, вы получаете от них одновременные изменения родительских и дочерних таблиц , если у вас нет индекса.Так что это, вероятно, , что вы видите (при условии, что вы не делаете очевидные вещи, как ОБНОВЛЕНИЕ упомянутых столбцов или удаление строк)
Если у вас есть таблица OLTP, которая имеет 13 FK для поисковых таблиц, я не увлекаюсь 13 обновлениями индекса в дополнение к таблице, pk и любым другим индексам. Индекс важен, но по определенным причинам. Если вы никогда не обновляете родительский PK и не удаляете его из родителя, индекс child не так полезен. Или это? – 2008-12-09 16:14:56