Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СУБД Oracle / Лекции / Лек_ORAC / Lij / Средства параллельной обработки информации.doc
Скачиваний:
57
Добавлен:
16.04.2013
Размер:
92.16 Кб
Скачать

Разделение данных и параллельная sql-обработка

Параллельная обработка операций, выполняемых над базой данных (например, сканирования, соединения и сортировки), — это только одна сторона параллельной SQL-обработки; для линейного повышения скорости выполнения некоторых операций обработки часто требуется разделение данных (разбиение таблиц и индексов для хранения их на разных дисках). Как было сказано ранее, разделение данных – это распределение информации среди нескольких дисков для того, чтобы не допустить возникновения узких мест из-за ограниченной пропускной способности подсистем ввода/вывода отдельных дисков. Параллельные запросы, возможно, будут обработаны не лучшим образом, когда в них запрашиваются неразделенные данные. Например, на рис. 7 показано, что запрос на упорядоченное сканирование всех строк большой таблицы базы данных может выполняться медленно из-за ограничений, возникающих при работе с диском.

На рис. 7 представлена ситуация, называемая конвейерной параллельностью (pipelined parallelism). Запрос обрабатывается параллельно, но эта параллельность ограничена "трубой" ("pipe")пропускной способностью диска, на котором находится вся таблица. Чтобы избежать возникновения конвейерной параллельности в системе с параллельной SQL-обработкой, используется разделение данных. На рис. 8 показано, что тот же самый параллельный запрос может быть выполнен намного быстрее после того, как информация большой таблицы разделена среди нескольких дисков.

Способы разделения данных

Существует множество различных способов разделения данных. Ранее было рассказано, как использовать возможности Oracle8 по разделению таблиц и индексов для разбиения этих объектов на более мелкие и более управляемые части. При конфигурировании Oracleдля параллельной SQL-обработки мы настоятельно рекомендуем применять средства разделения таблиц и индексов по диапазонам, чтобы максимально повысить производительность используемой системы.

Оптимизатор запросов Oracle8 знает о разделении информации тех таблиц и индексов, которые были разбиты на части при помощи встроенного средства разделения данных. Например, если параллельному запросу требуются данные только одного раздела большой таблицы, оптимизатор запросов Oracleавтоматически отменяет сканирование всех других разделов этой таблицы.

К сожалению, при выполнении некоторых запросов нельзя извлечь выгоду из предлагаемого Oracle8 разделения данных по диапазонам. Другим распространенным способом разделения является карусельное (round-robin) разделение. При этом сервер случайным образом распределяет строки таблицы среди доступных разделов таблицы. Карусельное разделение может ускорить выполнение любых параллельных SQL-запросов, так как данные не разделяются специально для того, чтобы обработать какой-либо запрос. Чтобы распределить физические области хранения информации базы данныхOracleсреди нескольких дисков, обычно применяют различные сервисы внешней операционной системы. Например, в большинстве операционных систем, работающих с многопроцессорными компьютерами, имеются специальные утилиты для чередования дисков (disk striping),позволяющие случайным образом распределять блоки файлов операционной системы среди нескольких дисков. При использовании карусельного разделения информации баз данныхOracleрекомендуется применять такие утилиты.