Классика баз данных - статьи

       

Параллельные планы выполнения соединений


В NonStop SQL предлагаются три параллельных плана для выполнения соединений. В планах могут использоваться один или более методов вложенных циклов, хэширования и сортировки со слиянием. На рис. 3 иллюстрируются эти планы. Они описываются следующим образом.

Рис. 3: Параллельные планы выполнения соединений

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

Account(Branch, AccountNo, Owner, CreditLimit)


и
Deposits(Branch, AccountNo, Date, Amount)

Обе таблицы являются разделенными по диапазонам ключа-атрибута Branch. Следовательно, соединение по предикату Account.Branch = Deposits.Branch AND Account.AccountNo = Deposits.AccountNo обнаружит все соединяемые строки в соответствующих разделах. Поэтому оказывается возможно соединять каждую пару соответствующих кортежей независимо и в параллель. Оптимизатор распознает этот особый, но, тем не менее, распространенный случай и генерирует соответствующий план выполнения. Разработка базы данных таким образом, чтобы были возможны соединения соответствующих разделов, является распространенным и простым средством достижения параллелизма.

Соединение разделенной таблицы с какой-либо другой таблицей: Для этого плана параллелизм достигается за счет чтения каждого раздела разделенной таблицы R в параллель. Каждый раздел R параллельно с другими разделами последовательно соединяется со всей таблицей S. В этом плане используются либо вложенные циклы, либо сортировка хэшированием. Соединение вложенными циклами выбирается, только если для таблицы S существует индексный путь доступа. Чтобы для достигался высокий уровень параллелизма, требуется чтобы либо таблица S была разделенной и имелся индекс на столбце соединения, либо таблица S была очень небольшой по сравнению со соимостью чтения таблицы R.



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