Тема14. Создание физической модели базы данных:проектирование производительности

Аннотация. В настоящей лекции рассматриваются вопросы проектирования для обеспечения требуемого уровня производительности физической структуры хранилища данных на основе СУБД-ориентированных средств: индексов, секций, кластеров.

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

Цель лекции

Изучив материал настоящей лекции, обучающийся будет знать:

И научится:

Литература: [2], [3], [37], [67].

В настоящей лекции мы рассмотрели три основных метода повышения производительности запросов, которые используют встроенные в СУБД механизмы и объекты: индексы, секции и кластеры. Основная идея индексирования таблиц состоит в создании специальных объектов СУБД — индексов для повышения производительности выборки строк таблиц в запросах. Как правило, для первичных ключей таблиц СУБД создает индексы автоматически. При создании дополнительных индексов следует помнить о том, что индексы требуют от СУБД дополнительных усилий для их поддержки и обслуживания, занимают дополнительное место в файловой системе и не всегда используются оптимизатором запросов при обработке команды SELECT. Основная идея секционирования таблиц — с помощью встроенных команд СУБД разбить таблицы большого объема на ряд физических фрагментов в соответствии с некоторым критерием секционирования, чтобы сократить объем ввода-вывода при обработке фрагментов. Секционирование очень часто применяется при работе с таблицами большого объема. Если в проектируемой базе данных предполагается наличие объектов большого объема (более 1 Гб), обязательно следует рассмотреть возможность использования техники секционирования. Решение вопроса, стоит ли применять секционирование, в основном зависит от того, насколько велика таблица или насколько она может увеличиться, как она используется и насколько эффективно отвечает на пользовательские запросы и операции обслуживания. В целом, большую таблицу стоит секционировать, если выполняются следующие два условия:

При разбиении таблиц на секции следует помнить о том, что секции требуют от СУБД дополнительных усилий для их поддержки и обслуживания. Основная идея кластеризации таблиц состоит в том, чтобы хранить совместно используемые в запросах колонки различных таблиц на общих физических страницах дискового пространства файловой структуры с целью повышения производительности обработки запросов. Однако нужно помнить, что проектирование кластеров — это «штучная» работа. Выигрыш в производительности может быть не слишком высок по сравнению с другими проектными решениями. Чтобы построить высокопроизводительный кластер для таблиц, полезно знать статистику использования аналогичного кластера при эксплуатации аналогичного ХД, а это не всегда бывает известно.

Контрольные вопросы:

  1. Что такое секционирование таблиц?
  2. Что такое секционирование индексов?
  3. Что такое секционирование представлений?