Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Технология кластеризации БД



Кластер (англ. cluster) — в СУБД Oracle Database специализированный объект базы данных, используемый для физически совместного хранения одной или нескольких таблиц, которые часто соединяются вместе в SQL-запросах. Кластеры хранят взаимосвязанные строки разных таблиц вместе в одних и тех же блоках данных, что позволяет сократить количество операций дискового ввода-вывода и улучшить время доступа для соединений таблиц, входящих в кластер. После создания кластера в нем можно создавать таблицы. Перед тем как добавлять строки в кластеризованные таблицы необходимо создать индекс кластера.

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

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

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

Как правило, используется в СУБД среднего и большого размера. SQL-сервер – сервер среднего класса, а кластеризация в нем уже есть.
Идея кластеризации заключается в наиболее близком физическом размещении на диске логически связанных между собой данных (например, по какому-нибудь полю, по ключу). Записи физически лежат друг за другом.

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

Применяется 2 подхода: внутрифайловая и межфайловая кластеризация.
Внутрифайловая – это когда записи располагаются друг за другом в рамках одной таблицы.

Межфайловая – друг за другом располагаются записи из связанных таблиц (считывается запись поочерёдно, то из одной, то из другой).

Основные проблемы возникают при добавлении записей: когда появляется запись, которую нужно разместить между записями. Для этого делают ЗАПАС, за который отвечает параметр fillpart, обычно в % бывает 60-80%. Поэтому фактически вначале данные заносятся разряженными. Со временем опять возникает та же проблема. Диспетчер файлов, пока есть свободные места, даже передвигает записи, чтобы вставить нужную новую запись. Приходит время, когда всё пространство заполнено. К кластерам добавляются новые блоки, называемые ЭКСТЕНТАМИ – непрерывные области ~64 страницы, выделяемые на диске.

Если применить ещё и хеширование, что часто используется (совместно), то хешированный кластер требует ещё больше пустого места (свободного пространства) в блоке для обновления данных, поскольку некоторые адреса могут в принципе не использоваться.

Хешированные кластеры
Поддерживаются в СУБД Oracle, начиная с 7й версии, выпущенной в 90е годы. Используется хеширование для быстрого доступа к первичному ключу.

Рекомендации для использования таких кластеров
1. Целесообразно использовать для хранения таблиц, доступ к которым производится в разделе where с применением равенств (например, name=Иванов).
2. Хеширование приводит к тому, что изначально не надо создавать большие кластеры.
3. Не рекомендуется использовать для таблиц с полным просмотром (например, по городам, где полный просмотр используется вместо индекса).
4. Не рекомендуется использовать для таблиц с частым изменением данных. Поскольку записи на диске «как живые» их надо часто двигать между собой, и это занимает много времени, происходит перезапись адресов, одно стирается, другое записывается.

В основе понятия кластеризации лежит принцип как можно более близкого физического расположения на диске логически связанных между собой и часто употребляемых данных. Физическая кластеризация данных – важное условие высокой производительности.

Что подтверждается следующим примером. Допустим, что наиболее часто используется запись r1, находящаяся в блоке В1, а для работы с ней требуется запись r2 блока В2. Тогда возможно возникновение ситуации:

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

Если блоки р1 и р2 не совпадают, но физически располагаются достаточно близко, например это смежные блоки, то для доступа к записи r2 потребуется еще одна операция ввода-вывода. Однако, поскольку головка чтения/записи уже будет находиться в непосредственной близости от нужного положения, то время поиска будет очень малым.

Существует два вида кластеризации внутрифайловаяи межфайловая. Пусть имеются отношения поставщик, детали, поставка.

Если в системе часто требуется осуществлять доступ к данным о поставщике согласно его порядковому номеру, то все записи о поставщиках следует физически размещать таким образом, чтобы запись о поставщике 2 находилась возле записи о поставщике 2 и так далее. Такая кластеризация называется внутрифайловой.

/* Нет кластеризации. Страница содержит по одной записи.

Поставщик 1 Поставщик 2 Поставщик 3 Деталь1 Деталь2
П1 д2 П1 д1    
         

После добавления детали 3, удаления поставщика 3, добавлении п1д3, добавлении поставщика 4.

Поставщик 1 Поставщик 2 П1д3 Деталь1 Деталь2
П1 д2 П1 д1 Деталь 3 Поставщик 4  
         

Теперь для осуществления запроса вывести все поставщиков необходимо считать страницы 1, 2, переместиться на 9. При наличии кластеризации считали бы 1,2,3 страницы. */

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





Дата публикования: 2015-02-18; Прочитано: 913 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.011 с)...