Научно-производственный центр Интелтек Плюс

Модернизация унаследованных СУБД для обеспечения параллелизма

Самарев Роман Станиславович, МГТУ им. Н.Э.Баумана, НПЦ ИНТЕЛТЕК ПЛЮС, samarev@acm.org

Традиционно проблемы параллельных СУБД рассматривают в контексте специализированных вычислительных комплексов и кластеров вычислительных систем. Однако массовое использование недорогих многопроцессорных/многоядерных серверов семейства x86 актуализировало проблему параллельного выполнения запросов для СУБД, при разработке которых она не рассматривалась или рассматривалась в наиболее простых формах межзапросного параллелизма. Учитывая, что большую часть времени СУБД работает в режиме неполной загрузки, внутризапросные формы параллелизма могут существенно снизить время отклика и повысить производительность за счет более равномерного и полного использования доступных ресурсов вычислительной системы (ВС).

Доклад посвящен вопросу организации внутризапросного межоперационного параллельного выполнения запросов СУБД в условиях не монопольного использования ресурсов ВС при модификации кода существующей (унаследованной) СУБД с последовательным выполнением запросов на примере объектной СУБД ODB-Jupiter, разработанной в «НПЦ ИНТЕЛТЕК ПЛЮС».

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

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

Для выполнения запроса в СУБД строится физический план выполнения –последовательность элементарных физических операций СУБД для выполнения заданного запроса. В зависимости от конкретной реализации СУБД, параллельный физический план выполнения, может быть получен на основании статистических данных о БД и выполняемых в данный момент операциях. Однако это не учитывает изменения состояния ВС во времени и ситуацию совместного выполнения на одной ВС с СУБД иных программ, т.е. ситуацию, характерную для массовых ВС с архитектурой x86. Либо параллельный физический план предписывает лишь возможный параллелизм, а контроль его допустимости производится в процессе выполнения.

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

Последний этап создания параллельной СУБД требует выбора метода запуска и координации параллельных микроопераций. При этом возможно как использование непосредственных средств ОС для запуска параллельных потоков, так и использование специализированных средств программирования типа MPI, OpenMP, обеспечивающих параллельную обработку на уровне фрагментов кода программы. Тем не менее, в рамках совместного использования ВС основной проблемой является контроль степени параллелизма и общего состояния ВС для предотвращения системной деградации производительности при избыточном количестве одновременно выполняемых операций. Таким образом, требуется создание средства (параллелизатора), обеспечивающего общую координацию, контроль параллельного выполнения и имеющего обратную связь по состоянию ВС, а также вносящего минимальную задержку выполнением собственных служебных функций. Причем количество контролируемых параметров зависит от конкретной реализации СУБД и ОС.

В докладе рассматривается пример выявления взаимонезависимых операций сервера БД, а также способ создания параллельного плана выполнения с возможностью динамического изменения степени параллелизма. В рамках создания параллелизатора, рассматривается метод оценки малых величин времени на процессорах-потомках Intel P5 и проблематика выбора способа постановки заданий на параллельное выполнение различными средствами ОС. Рассматривается структура адаптивного параллелизатора и средства создания обратной связи состояния ВС для ОС Windows. СУБД ODB-Jupiter с использованием разработанного параллелизатора показала существенное снижение времени отклика при малых плотностях запросов на многопроцессорных ВС при работе в составе ИПС «Обзор СМИ» в Совете Федерации РФ.

Материалы доклада (формат PDF) >>

Литература:

  1. Андреев А.М., Березкин Д.В., Самарев Р.С., Внутренний мир объектно-ориентированных СУБД //Открытые системы. – 2001. - № 3, стр. 44-54.
  2. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. – СПб.: БХВ-Петербург, 2002. – 608 с.
  3. Гарсиа-Молина Г., Ульман Дж., Уидом Дж. Системы баз данных. Полный курс.: Пер. с англ. – М.: Издательский дом “Вильямс”, 2003.
  4. Саймон А.Р. Стратегические технологии баз данных. - М.: Финансы и статистика, 1999.
  5. Соколинский Л.Б. Параллельные машины баз данных //Природа. Естественно-научный журнал Российской академии наук. - 2001. - № 8. - C. 10-17.
  6. Graefe G. Encapsulation of Parallelism in the Volcano Query Processing System. Proc. of the 1990 ACM SIGMOD International Conference on Management of Data. http://portal.acm.org/citation.cfm?id=98720
  7. Graefe Goetz. Query Evaluation Techniques for Large Databases. ACM Computing Surveys. Vol. 25, No. 2, June 1993.
  8. Stonebraker Michael. The Case for Shared Nothing. //IEEE Database Engineering Bulletin. Vol. 9, Number 1, March 1986. - P. 4-9.