|
|
|||||||||||||||||||||
Динамический метод организации работы, при котором следующее действие накладывается на предыдущее, позволяет ускорить процесс распараллеливания запросов. СУБД тщательно выбирает реляционные операции для каждого шага, чтобы избежать потерь скорости конвейера. Внешний параллелизм — это дополнительный уровень распараллеливания операций. Он реализуется за счет одновременного выполнения нескольких шагов запроса всеми компонентами организации параллелизма. Для выполнения любого шага операции над базой данных на каждом AMP активизируются один или несколько процессов. Несколько шагов запроса могут выполняться одновременно, если они не зависят от результатов предыдущих шагов. На рис. 2 показана система с четырьмя AMP и запрос, разделенный оптимизатором на семь шагов. Шаг 2.2 (аналогичный шагу 1.2) соответствует внутреннему параллелизму: сканируются и соединяются две таблицы, Lineitem и Order. Все три действия выполняются конвейерным методом в пределах одного шага. Шаги 1.1 и 1.2, как и шаги 2.1 и 2.2, демонстрируют многошаговый параллелизм, при котором каждый процессор AMP выполняет два шага одновременно. В дополнение к методам параллельной обработки, показанным на рис. 2, предлагается расширение SQL, называемое Multi-Statement Request («запрос, состоящий из нескольких предложений»), позволяющее связать несколько предложений SQL и направить их оптимизатору как единое целое. СУБД пытается выполнить эти предложения параллельно, причем все общие подвыражения обрабатываются однократно, а результаты поступают в общее пользование. Соответствующий метод известен как «исключение общих подвыражений». Если связать вместе шесть предложений выбора SELECT, содержащих один и тот же подзапрос, последний будет выполнен только один раз. Но даже если предложения SQL зависят друг от друга и выполняются с перекрытием по времени, каждое из них возвратит собственный независимый результат. Столь многогранный параллелизм реализуется благодаря тому, что изначально предусматривался в архитектуре СУБД. Размещение данныхПри попытках добиться оптимального функционирования механизмов параллелизма СУБД Teradata в MPP-системах удалось понять, что физическое секционирование данных как помогает, так и препятствует использованию преимуществ параллельной обработки. С точки зрения MPP многие из известных вариантов секционирования бесполезны. Одна из типичных проблем состоит в том, что равномерное распределение данных по дискам или узлам не гарантирует сбалансированности нагрузки на базу данных, поэтому ключевым критерием оптимизации является равномерная загрузка всех компонентов организации параллелизма. Проблема балансировки нагрузки решается за счет приписывания строк данных процессорам AMP на постоянной основе и использования передового алгоритма хеширования для размещения данных. Решение связать данные с единицами параллелизма привело к выбору общей схемы размещения данных, именуемой хеш-секционированием. Она формализует оптимальное распределение рабочей нагрузки, поддерживает равномерное размещение данных. Хеш-секционированиеВведенные данные обрабатываются с помощью сложного алгоритма хеширования и автоматически распределяются по всем процессорам AMP. Индексация также основана на хешировании, что уменьшает нагрузку на администратора базы данных при настройке прямого доступа. Для определения базы данных администратор просто выбирает в каждой таблице в качестве первичного ключа столбец или набор столбцов. Как показано на рис. 3, хеш-коды ключевых столбцов определяют процессор AMP, который принимает данные на хранение, и логическое местонахождение данных в его дисковом пространстве. И все это — без выполнения отдельной операции CREATE INDEX («Создать индекс»). При выборе строки значение первичного ключа также передается алгоритму хеширования, который выдает хеш-коды, определяющие, какой процессор AMP владеет строкой и где находятся данные. Хеш-секционирование обеспечивает несколько явных преимуществ системам поддержки решений. Механизм индексации на основе хеширования позволяет обойтись без упорядочения ключей. Часто в системах управления базами данных для индексации применяется тот ли иной вариант сбалансированного дерева (B-дерева) на базе алфавитной последовательности, указанной пользователем. По мере поступления в систему новых данных и добавления в случайном порядке элементов к индексам B-дерева эти структуры постепенно становятся неупорядоченными. Стоимость использования индекса быстро возрастает, а при реорганизации вся структура становится недоступной. Алгоритмы хеширования не задействуют требующих реорганизации вторичных структур, им не нужны определенный пользователем алфавитный порядок и сортировка данных перед занесением или вставкой. Хеш-секционирование позволяет по значениям первичного ключа поместить на один узел сходные строки из разных таблиц. Если соединение выполняется по первичным ключам обеих таблиц, подлежащие соединению строки будут находиться на одном узле и принадлежать одному процессору AMP. Расположение соединяемых строк в памяти одного узла приводит к уменьшению межузлового трафика и времени выполнения запроса, а само межузловое соединение высвобождается для другой работы (рис. 4). Для размещения хешированных данных требуется лишь выбрать столбцы, образующие первичный индекс таблицы, а затем процесс физического размещения данных полностью осуществляется в автоматическом режиме. Не нужно изменять размеры и переименовывать файлы, предпринимать выгрузку или перезагрузку данных.
Итак, хеш-секционирование обеспечивает сбалансированную обработку и размещение данных, уменьшение объема межузлового трафика и освобождает администратора баз данных от трудоемких реорганизаций. Секционированный первичный индексВыгоды хеширования данных обусловлены включением секционирования во все решения Teradata. Секционированный первичный индекс (partitioned primary index, PPI) позволяет разделять таблицы по интересующим столбцам. Наряду с этим он используется для равномерного распределения данных, локализации операций соединения данных, принадлежащих одному процессору AMP, и эффективного доступа к ним (если значения первичного ключа указаны в запросе). 30.03.2006г Также в разделе:
|
СодержаниеСовременные архитектуры Руководителю проекта Разработчику Книги Системы управления базами данных Советы и мнения Интернет Книжная полка ОС Академия ОС Программная инженерия Разное Менеджмент ИТ Платформы
Новости
От редакции |
||||||||||||||||||||