Использование кластеризации

Кластер создаётся с помощью команды CREATE CLUSTER:

create cluster ([,,…]);

Здесь в скобках перечисляются поля кластерного ключа. Затем создаются таблицы в кластере:

create table ()cluster ();

Количество и типы полей кластерного ключа таблицы должны совпадать с количеством и типами полей КК в определении кластера, а имена полей могут быть другими. Типы данных в <списке полей КК> для таблицы не указываются. Перед занесением данных в таблицы кластера необходимо создать кластерный индекс – индекс по кластерному ключу:

create index on cluster;

Поля для индексирования не указываются, потому что кластерный индекс создаётся по полям кластерного ключа. В отличие от обычного индекса в кластерном индексе null-значения индексируются.

Кластеры обычно строятся для таблиц, часто используемых в соеди-нении друг с другом, например, связанных отношением "один-ко-многим". Не стоит создавать кластер в следующих случаях:

  • Если данные в кластерном ключе этих таблиц часто обновляются. Изменение столбцов кластерного ключа требует гораздо больше системных ресурсов, чем обновление некластеризованных данных, так что выигрыш от ускорения поиска данных оказывается меньше, чем затраты на перемещение строк.
  • Если часто требуется полный просмотр отдельной таблицы. Полный просмотр индивидуальных таблиц кластера требует больше времени, чем просмотр раздельно хранящихся таблиц, т.к. физически требуется обратиться к большему числу блоков. Если по отдельности некластеризованные таблицы занимают n1 и n2 блока соответственно, то вместе они будут занимать (n1+n2) блоков, и для полного просмотра каждой из них придётся обращаться к диску (n1+n2) раз.
  • Если суммарные данные таблиц с одним и тем же значением кластерного ключа занимают больше одного блока данных. Второй и последующие блоки для одного и того же значения кластерного ключа выделяются не подряд, что вызывает частые перемещения считы-вающей головки диска и увеличение времени доступа к данным.

Часто для окончательного определения целесообразности создания кластера в конкретной ситуации ставят эксперименты и измеряют производительность БД на реальных данных и реальных запросах.

Обратите внимание:

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

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

  "Кто хочет работать – ищет средства, кто не хочет – причины".
  С.П. Королёв, советский ученый и конструктор в области космонавтики

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: