Сведения о вопросе

Gentleman

06:54, 8th August, 2020

Теги

Когда вы используете табличные кластеры?

Просмотров: 451   Ответов: 3

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

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

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

//Oracle советы очень ценятся.



  Сведения об ответе

$DOLLAR

22:06, 13th August, 2020

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

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

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

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

С другой стороны, существуют "single table clusters", которые в основном используются для управления "clustering factor"-аналогичная идея, как кластеризованные индексы (называемые Index-Organized-Table в Oracle), но не добавляющие больших затрат при использовании вторичного индекса.


  Сведения об ответе

qwerty101

12:19, 6th August, 2020

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

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

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

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


  Сведения об ответе

SEEYOU

01:24, 8th August, 2020

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

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

"Reasonably small" нелегко определить, но почтовые или zip коды в адресной таблице кажутся разумными, если вы часто запрашиваете все адреса в одном регионе кода. Province/state/territory коды, вероятно, слишком малы для выбора в таблице адресов по всей стране.

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться