IOT против таблиц кучи в Oracle - PullRequest
2 голосов
/ 20 августа 2011

Давно поработав с SQLServer, я привык думать, что кластеризованная таблица (таблица с кластеризованным индексом) обычно является лучшим выбором по сравнению с таблицей кучи. Сейчас я также работаю с Oracle и не очень понимаю, почему их таблицы по умолчанию являются кучей. Исходя из моего опыта, я могу сказать, что существует ограниченное количество случаев, когда таблицы должны быть в куче (опять же, я в основном имел дело с SQLServer).

Есть ли у Oracle веская причина для "форсирования" (под принуждением я имею в виду, что CREATE TABLE без указания organization index создает кучу в отличие от SQLServer, который по умолчанию создает кластеризованную таблицу), чтобы пользователи использовали таблицы кучи?

[Update]
Разъяснение о SQLServer - я мог неправильно использовать «default» для описания поведения SQL Server; Мне известно, что он создает кластерный индекс, если первичный ключ указан в CREATE TABLE. Суть в том, что мне не нужно указывать, что PK кластеризован.
[/ Update]

Кроме того, в SQLServer есть много хороших статей о кластерных таблицах и кучах, и мне интересно, в какой степени это может быть применено к Oracle.

Любая информация приветствуется.

Спасибо.

Ответы [ 2 ]

5 голосов
/ 21 августа 2011

Одним из исторических преимуществ Oracle является механизм блокировки на уровне строк, в котором блокировки хранятся в строке данных (а не в памяти или отдельной структуре). Это означает, что никогда не было необходимости «минимизировать» количество блокировок в транзакции, и не было концепции наращивания блокировок строк на странице (или блокировок таблицы).

Механизм параллелизма и восстановления также позволяет записывать незафиксированные данные на диск, а не хранить их в памяти.

Они смягчают те же проблемы, которые также могут быть решены с помощью кластеризации / структурированных таблиц btree.

Короче говоря, таблицы кучи в Oracle не имеют таких же проблем, как таблицы кучи в других базах данных, поэтому вы не получаете тех же преимуществ от совместного размещения связанных данных в одних и тех же физических блоках.

2 голосов
/ 20 августа 2011

Я много работаю с Oracle, и по моему опыту IOT (= BTree-like) может иметь стоимость, которая нейтрализует или перевешивает возможную выгоду ...

"кластеризованный" и IOT / Btree - разные звери в терминологии Oracle - я не очень хорошо знаю SQL Server, но читал, что "кластеризованный" означает нечто отличное от того, что он означает в Oracle ...

Это скорее индивидуальное решение ... хотя мне нравится придерживаться настроек по умолчанию и оптимизировать по мере необходимости ...

Некоторые ссылки с информацией об Oracle / Index:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...