Когда вы используете кластеры таблиц? - PullRequest
7 голосов
/ 26 августа 2008

Как определить, когда использовать кластеры таблиц ? Существует два типа, index и hash, для использования в разных случаях. По вашему опыту, окупились ли внедрение и использование кластеров таблиц?

Если ни одна из ваших таблиц не настроена таким образом, их модификация для использования кластеров таблиц усложнит настройку. Но превзойдет ли ожидаемая производительность преимущества по сравнению с затратами на усложнение будущих работ по техническому обслуживанию?

Есть ли у вас какие-нибудь любимые онлайн-справочники или книги, которые хорошо описывают кластеризацию таблиц и дают хорошие примеры реализации?

// Советы Oracle приветствуются.

Ответы [ 3 ]

7 голосов
/ 22 июня 2011

Отличительной особенностью кластеров таблиц является то, что вы можете хранить связанных строк разных таблиц в одном и том же физическом месте.

Это может улучшить производительность соединения на порядок. Однако это не так часто, как кажется.

Единственный раз, когда я использовал это, было соединение трех таблиц, выполненное двумя хеш-соединениями. Это заняло слишком много времени;). Однако объединение было в том же столбце, поэтому можно было использовать кластер хеш-таблиц с ключом столбца объединения. Это привело к тому, что все связанные строки были сохранены рядом (в идеале, в одном блоке базы данных). Зная это, Oracle может выполнить соединение с помощью специальной оптимизации («соединение кластера»).

Это более или менее предварительно соединено, но все еще похоже на обычные таблицы (для INSERT / SELECT / UPDATE / DELETE).

С другой стороны, существуют «кластеры из одной таблицы», которые в основном используются для управления «фактором кластеризации» - похожая идея, такая как кластерные индексы (называемые Index-Organized-Table в Oracle), но не добавляющая высокую стоимость, если используя вторичный индекс.

2 голосов
/ 22 июня 2011

Можно много говорить о кластеризации, но я обнаружил, что почти полное объяснение кластеров Oracle (плюсы и минусы, когда использовать и как использовать) можно найти в книге Тома Кайта - Эффективный Oracle по проекту , также вы можете искать asktom для некоторых конкретных примеров использования кластера ( 1 , 2 и т. Д.) , Вам обязательно стоит взглянуть на эту книгу, если вы еще этого не сделали.

Некоторую информацию вы также можете найти здесь .

Но перед созданием сложных структур схемы вы всегда должны пытаться тестировать, тестировать и выбирать одно решение, которое наилучшим образом соответствует вашим потребностям:)

Надеюсь, это поможет.

1 голос
/ 27 августа 2008

Я сам не использовал кластеры таблиц Oracle, но понимаю, что кластеры таблиц индексов очень похожи на кластерные индексы MS SQL Server. То есть данные строки физически организованы по ключу кластерного индекса.

Это идеальный вариант для столбца с широким доступом, который имеет достаточно небольшое количество возможных значений (по сравнению с общим числом строк), где большинство запросов хотят получить все строки с определенным значением. Поскольку все такие строки физически хранятся вместе, дисковый ввод-вывод, особенно время поиска, сокращается.

«Достаточно маленький» определить нелегко, но почтовые или почтовые индексы в таблице адресов кажутся разумными, если вы часто запрашиваете все адреса в регионе одного кода. Коды провинций / штатов / территорий, вероятно, слишком малы для таблицы адресов по всей стране.

Таким образом, вы не хотите использовать их в столбцах с несколькими возможными значениями (например, M / F для пола), потому что тогда кластеризация ничего не купит и, вероятно, будет стоить вам для вставок. Вы также никогда не захотите использовать кластеризацию для столбцов суррогатного ключа «autonumber» (из последовательностей в Oracle), потому что это создаст «горячую точку» в последнем экстенте таблицы, поскольку все вставки должны происходить там физически. Вы также не хотите применять кластеризацию к значению столбца, которое будет обновлено, поскольку СУБД придется физически перемещать запись, чтобы поддерживать кластеризованный порядок.

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