СПРАВОЧНЫЙ ВИД РАСЧЕТА ТАБЛИЦЫ SAP HANA РАБОТАЕТ МЕДЛЕННО В СРАВНЕНИИ С НЕРАСПРЕДЕЛЕННЫМ ВИДОМ РАСЧЕТА ТАБЛИЦЫ - PullRequest
0 голосов
/ 15 октября 2018

У меня есть таблица большого размера, близкая к 1 ГБ, и размер этой таблицы растет каждую неделю, общее количество строк составляет 190 миллионов, я начал получать предупреждения от HANA о разбиении этой таблицы, поэтому я планировал разделить это сстолбец, который часто используется в предложении Where.

Моя система HANA является системой горизонтального масштабирования с 8 узлами.

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

Я разделил эту таблицу с помощью метода HASH и по количеству серверов и записал производительность запросов. Таким образом, у меня было бы хорошее распределение данныхмежду серверами. Я создал представление расчета и записал производительность запроса.К моему удивлению, я обнаружил, что мой запрос представления вычисления для нераздельной таблицы работает лучше по сравнению с представлением вычисления для многораздельной таблицы.

Это было действительно шоком. Не уверен, почему представление вычисления без многораздельной таблицы лучше реагирует на многораздельную таблицуПредставление расчета.

У меня есть выходные файлы плана, но я не уверен, где их прикрепить.

Дайте мне знать, почему это происходит.

1 Ответ

0 голосов
/ 15 октября 2018

Хорошо, это не простой вопрос, на который можно ответить правильно как таковой.Однако я могу перечислить некоторые факторы, которые, вероятно, будут играть здесь роль:

  • для однораздельной таблицы требуется один доступ к структуре таблицы, в то время как для многораздельной версии требуется как минимум один доступ длякаждый раздел
  • , если SELECT на самом деле не предоставляет условие WHERE, которое может быть оценено с помощью функции HASH, используемой для разбиения, то всегда необходимо оценивать все разделы иОбрезка разделов невозможна.
  • Разделение HASH не учитывает никаких дополнительных знаний о данных, а это означает, что подобные данные не сохраняются вместе.Это оказывает негативное влияние на сжатие данных.Кроме того, для каждого раздела требуется свой собственный набор словарей значений для столбцов, где для однораздельной / однораздельной таблицы требуется только один словарь на столбец.
  • Вы упомянули, что используете систему горизонтального масштабирования.Если разделы таблицы распределены по разным узлам, то каждый запрос приведет к межузловому сетевому взаимодействию.Это дополнительная рабочая нагрузка и время ожидания, которого просто не существует в однораздельных таблицах.
  • При объединении многораздельных таблиц каждый раздел первой таблицы должен быть объединен с каждым разделом второй таблицы, если разделов нет.возможно двустороннее объединение.

Существуют и другие / более потенциальные причины того, почему запрос к многораздельным таблицам может быть медленнее, чем к однораздельной таблице.Все это подробно объясняется в Руководстве по администрированию SAP HANA .

В качестве общего руководства таблицы следует разбивать на части только в том случае, если этого нельзя избежать и когда схема доступа к запросам хорошо понятна.Это определенно не та функция, которую вы просто «включаете», и все будет работать нормально.

...