Комментарии по теме

«Ре­ко­ме­нда­ции по обе­спе­че­нию бе­зо­па­сно­сти и контроля SAP HANA»
Дмитрий Буслов:
(1) Автор начинает с того, что HANA — это СУБД, позволяющая хранить записи в колонках и работающая в оперативной памяти. Я бы, хотел сделать акцент на том, что HANA — не просто СУБД,...
«Различие между двумя текущими версиями HANA»
Олег Точенюк:
Спасибо конечно... я вот не понимаю как консалт выживает в этом мире, когда есть такой чудесный традиционный сайт help.sap.com/ :-)
«Упрощаем работу с ADBC»
Леонид Мартынов:
Спасибо за отзыв!   Я согласен для HANA актуальна  HANA studio. Но я имел опыт с тем, что например доступ к ней разработчик по каким-либо причинам не имеет, а новый Open SQL не поддерживает...

Параллельные вычисления в SAP HANA 73


1929
1

Введение

За последний десяток лет значительно повысилась производительность процессоров: увеличилась тактовая частота, количество ядер на один процессор. Только на одном современном сервере может быть установлено от 16 до 64 многоядерных процессоров, от 2 до 12 ядер в каждом. Использование многоядерной архитектуры вместе с возможностями параллельных вычислений позволяет решать задачи, недоступные еще десять лет назад.

Параллельная обработка данных

Платформа SAP HANA позволяет реализовать возможности быстрой обработки данных за счет распараллеливания процессов и хранения данных в соответствии с технологией in-memory.

Традиционно данные в СУБД хранятся в построчном виде, то есть кортежи хранятся в памяти последовательно. Альтернативой такому подходу является хранение данных по столбцам, то есть значения каждого из столбцов в памяти будут идти друг за другом. Наглядно принцип хранения данных по столбцам представлен на Рис.1.

Рис.1. Способы хранения табличных данных

Как показывают исследования [2], одной из наиболее частых операций с БД в корпоративной среде является чтение множеств данных. Технология in-memory позволяет хранить данные как по строкам, так и по столбцам. Хранение данных по столбцам в SAP HANA дает возможность выполнять подобные операции более эффективно, чем при построчном хранении.

Благодаря хранению данных в ОЗУ и кэше процессора время обращения к данным ускоряется на порядки по сравнению со временем доступа к жестким дискам (HDD) и твердотельным накопителям (SSD).

На Рис.2 указано время обращения к носителю информации (жесткий диск, флэш-память, ОЗУ, кэш 3-го уровня, кэш 2-го уровня, кэш 1-го уровня) для двухъядерного процессора с тактовой частотой 2 Ghz.

Рис.2. Сравнение скорости доступа

Из Рис.2 видно, что обращение к ОЗУ быстрее, чем к жесткому диску, в 100 000 раз. При сравнении же оперативной памяти с памятью процессора видно, что наибольший выигрыш в отношении скорости доступа к данным показывает кэш 1-го уровня — он быстрее в 200 раз [4].

SAP HANA использует параллелизм в рамках комплекса блейд-серверов и в части ядер отдельного процессора. Поскольку SAP HANA предусматривает организацию оборудования в виде стойки блейд-серверов, система позволяет разделять данные по серверам в соответствии со схемами секционирования. Вторым аспектом является параллельная обработка данных в рамках одного сервера — многоядерный параллелизм с доступом к общей памяти. Главная цель подхода состоит в оптимизации доступа к общей памяти и максимальной локализации данных в кэше процессора.

Большое количество ядер позволяет нагрузить каждое ядро «его собственными» процессами.

Возможность параллельно выполнять вычисления также обеспечивается за счет принципа SIMD (Single Instruction Multiple Data). Традиционно вычисления в процессоре выполняются в скалярном виде: одна инструкция возвращает один результат. Для SIMD-вычислений необходимы специальные инструкции процессора Intel SSE2/SSE3/ SSE4, которые позволяют за одну команду получить набор значений.

Скалярные вычисления

  • Используются стандартные инструкции процессора
  • Одна операция выдает один результат

Векторные вычисления

  • Используются инструкции Intel SSE2/SSE3/SSE4
  • Одна операция выдает вектор значений

Стоит отметить, что SIMD-вычисления оптимально подходят для БД HANA. При организации данных по столбцам каждую колонку таблицы можно представить в виде массива. В памяти данные массива лежат последовательно, что позволяет SIMD-инструкциям вычислять сразу несколько значений за одну команду.

Рис.3. Сравнение методов вычислений в рамках одного процессора

Рассмотрим распараллеливание вычислений на примере вызова процедуры. Демонстрационная процедура принимает на вход две таблицы, две другие — возвращает.

На Рис.4 представлена схема выполнения запроса. Как видно из схемы, при вызове процедуры HANA разделяет выборку данных на два потока, по одному на каждую таблицу. После завершения выборки результаты в отдельных потоках объединяются — с получением

Ограниченный доступ

Для прочтения полной версии статьи необходимо зайти как зарегистрированный пользователь.

Ключевые слова: SAP HANA
Функциональная область: SAP HANA / SAP HANA
Ролевое назначение: SAP Консультант / Consultant
Комментарии:

Виталий Глущенко (Рейтинг: 106) 20:23, 15 августа 2015

Спасибо, за первую часть статьи до рис. 4 включительно. Она была интересна и полезна.
А вот дальше появились вопросы. Предполагаю, что просто опущены некоторые детали, которых мне не хватило.
Например, в начале написано "Предположим, для выполнения задачи используется процессор с четырьмя потоками (threads).", а дальше описывается схема в которой активны только 2 потока. Предполагаю, что программно, это может обрабатываться и 4 потоками, когда 2 работают, 2 ждут, но зачем для этого процессор с 4-мя потоками, если достаточно 2-х?
И подскажите, а чем отличается обработка Scan, Aggregation и Join в SAP HANA от аналогичных операций в Oracle?

Любое воспроизведение запрещено.
Копирайт © «Издательство ООО «Эксперт РП»