Основы проектирования реляционных баз данных



Повышение производительности запросов: Кластеры - часть 2


Совместное хранение строк родительской и дочерней таблиц может значительно ускорить выполнение соединения этих таблиц.

Пример. Рассмотрим таблицы DEPARTAMENT и EMPLOYEE нашей учебной базы данных. Они некластеризованы и хранятся каждая на своих физических страницах. Предположим, что анализ запросов показывает, что в 80% запросов эти таблицы используются совместно, при этом соединение выполняется по колонке DEPNO. Проектировщик базы данных может решить построить кластер для этих двух таблиц. На рисунке ниже показана концептуальная сторона такого решения.

До кластеризации строки из таблиц сохраняются отдельно в своих физических областях на диске.

DEPARTMENT
DEPNODNAMELOC
10ТорговляМосква
20КонсалтингЧерноголовка
EMPLOYEE
EMPNOENAMELNAMEDEPNO
996КозыревСергей10
997СапегинАлексей20

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

CLUSTER
DEPNO
10DNAMELOC
ТорговляМосква
EMPNOENAMELNAME
996КозыревСергей
20DNAMELOC
КонсалтингЧерноголовка
EMPNOENAMELNAME
997СапегинАлексей

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

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

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




Содержание  Назад  Вперед