Текущее время: Ср, мар 27 2024, 07:57

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Всё, что вы хотели знать о HANA, но боялись спросить
СообщениеДобавлено: Ср, окт 21 2015, 21:52 
Младший специалист
Младший специалист

Зарегистрирован:
Сб, окт 17 2015, 13:11
Сообщения: 59
Итак, в этом посте срываются покровы и обнародуются шокирующие подробности о SAP HANA!!11!!
А если серьезно, готов в меру своих возможностей и знаний ответить на технические(не холиварные) вопросы об этой СУБД в рамках данного поста, ответы на которые вы не нашли в доках или FAQ.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Всё, что вы хотели знать о HANA, но боялись спросить
СообщениеДобавлено: Чт, окт 22 2015, 10:54 
Ассистент
Ассистент

Зарегистрирован:
Чт, мар 27 2014, 15:22
Сообщения: 34
kernelpanic написал(а):
А если серьезно, готов в меру своих возможностей и знаний ответить на технические(не холиварные) вопросы об этой СУБД в рамках данного поста, ответы на которые вы не нашли в доках или FAQ.

Ну "раз пошла такая пьянка", то первый вопрос :)

Имеется : HANA SPS09 (VMWare ESX 5.5, 16 VCPU, 48GB RAM). Задеплоен тест TPC-H (scale factor 50).
Слегка модифицированный запрос (3.sql из теста) :
Code:
select
        l_orderkey,
        sum(l_extendedprice * (1 - l_discount)) as revenue,
        o_orderdate,
        o_shippriority
from
       customer,
       orders,
       lineitem
where
        c_mktsegment = 'AUTOMOBILE'
        and c_custkey = o_custkey
        and l_orderkey = o_orderkey
group by
        l_orderkey,
        o_orderdate,
        o_shippriority
order by
        revenue desc,
        o_orderdate

стабильно выполняется за 35 сек.

Строк в таблицах: LINEITEM - 300 мил. , ORDERS - 75 мил., CUSTOMERS - 7.5 мил.

Есть ощущение, что должно быть "более лучше".

Что делал : создавал индексы по join-колонкам, создавал статистику, указывал кучу разных JOIN/OLAP-хинтов.

Безрезультатно. Точнее при использовании OLAP-хинтов рантайм проседает до 53-55 сек.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Всё, что вы хотели знать о HANA, но боялись спросить
СообщениеДобавлено: Чт, окт 22 2015, 10:56 
Ассистент
Ассистент

Зарегистрирован:
Чт, мар 27 2014, 15:22
Сообщения: 34
Странно, при добавлении любого текста к последней фразе в предыдущем сообщении "предпросмотр" превращает пост в кракозябры.

Продолжение.

Что замечено : при ипользовании join engine наблюдается очень "рваное" потребление VCPU, при использовании olap engine вообще 90% времени работает
только на одном VCPU.

Если найдутся мысли как это дело (join больших таблиц) можно оптимизировать, то буду очень признателен за "ликбез"


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Всё, что вы хотели знать о HANA, но боялись спросить
СообщениеДобавлено: Чт, окт 22 2015, 14:58 
Младший специалист
Младший специалист

Зарегистрирован:
Сб, окт 17 2015, 13:11
Сообщения: 59
Добрый день!

Давайте начнем с performance trace
Сможете его собрать для этого конкретного стэйтмента при отсутствии нагрузки?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Всё, что вы хотели знать о HANA, но боялись спросить
СообщениеДобавлено: Чт, окт 22 2015, 15:25 
Ассистент
Ассистент

Зарегистрирован:
Чт, мар 27 2014, 15:22
Сообщения: 34
Хост тестовый, параллельной нагрузки нет
Отправил в личку ссылку на архив с трейсом и планами

Спасибо.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Всё, что вы хотели знать о HANA, но боялись спросить
СообщениеДобавлено: Пн, окт 26 2015, 12:33 
Младший специалист
Младший специалист

Зарегистрирован:
Сб, окт 17 2015, 13:11
Сообщения: 59
kds, приветствую!

Посмотрел perftrace. БОльшая часть времени уходит на group by (почти 16 секунд), на построение таблицы джоина с lineitem (7 секунд) и на вычисление результата (почти 4 секунды)
Из customer берется 1501166 строк и джоинится с 14998184 строк из orders и 60003229 строк из lineitem (итоговая таблица именно такого размера)
Скорость процессинга по groub by по orders - 3.37 микросекунд на строку, по lineitem 5.27 микросекунд на строку.
Калькуляция вычисляемого поля: 15 микросекунд на строку.

Не могу сказать, что тут много возможностей для улучшения, скорее надо сужать условия.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Всё, что вы хотели знать о HANA, но боялись спросить
СообщениеДобавлено: Вт, окт 27 2015, 11:25 
Ассистент
Ассистент

Зарегистрирован:
Чт, мар 27 2014, 15:22
Сообщения: 34
Добрый день.

Спасибо.

Да, это все из планов и трейса я тоже увидел, больше интересовало можно ли как-то (хинтами или еще как) сделать на этом запросе параллелизм более "агрессивным"
Попробовал хинт PREAGGR_BEFORE_JOIN, но рантайм вообще улетел в 4 минуты.
Есть ли где-то какое-то описание use cases для хинтов кроме SELECT ...HINT clause ?

kernelpanic написал(а):
Не могу сказать, что тут много возможностей для улучшения, скорее надо сужать условия

С дополнительными предикатами по LINEITEM и ORDERS ожидаемо работает быстрее.

Вопрос возник собственно из-за того, что две других in-memory-БД тоже самое на том же хосте делают почти в три раза быстрее при этом укладывая в ноль все 16VCPU c первой секунды. Хочется того же добиться от HANA'ы.

Еще вот наткнулся :
Простенький запрос (симулируем фулскан по всей таблице LINEITEM) :
Code:
select l_shipdate, sum(l_extendedprice), count(*)
from tpchusr.lineitem
group by l_shipdate
order by 1 desc

мухой отлетает за секунду (в 4-5 раз быстрее обоих "конкурентов")
Но если попросить сделать :
Code:
select year(l_shipdate), sum(l_extendedprice), count(*)
from tpchusr.lineitem
group by year(l_shipdate)
order by 1 desc

то выполняется за 27 сек. При этом две трети времени "думает" в один поток.
Двое других - 3 и 8 сек. соответственно, также съедая CPU.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Всё, что вы хотели знать о HANA, но боялись спросить
СообщениеДобавлено: Ср, окт 28 2015, 15:38 
Младший специалист
Младший специалист

Зарегистрирован:
Сб, окт 17 2015, 13:11
Сообщения: 59
Добрый день,

хинты есть, описание к ним запаздывает, увы.
Почему другие in-memory бд отрабатывают быстрее, не готов ответить, не являюсь экспертом. Может быть что угодно, начиная от другой организации хранения и обработки, до Volkswagen-style tuning
Судя по перфоманс-трейсу, у Вас загрузка достигает 80 процентов на параллельной обработке, не могу сказать, что ядра простаивают.
С year() могу предположить, что вычисление функции не параллелится по какой-либо причине, можно попробовать собрать query optimizer трейс или опять-таки performance trace


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Всё, что вы хотели знать о HANA, но боялись спросить
СообщениеДобавлено: Пт, окт 30 2015, 17:27 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 18:21
Сообщения: 1613
kds а можно полюбопытствовать какие две другие inmemory у вас?

_________________
я твой сап эфай внедрял
BAdI-позитив
Взять немножечко абопу, сунь туда кошачью *опу, RFC лапки, БТ старой бабки, на медленном базиснике переносить, тестовое окружение материть, снимать SAT пенку, биться головой о стенку, охапка тайм-шитов, отчет готов!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Всё, что вы хотели знать о HANA, но боялись спросить
СообщениеДобавлено: Вт, ноя 03 2015, 13:53 
Модератор
Модератор

Зарегистрирован:
Чт, окт 21 2010, 08:48
Сообщения: 128
По параллелизации :
Можно попробовать with parameters ('request_flags'='ANALYZE_MODEL')
соответствует hint-у OLAP_PARALLEL_AGGREGATION
По выделению года - читаем BEST PRACTICE в гайдах. Юзаем GC и физ. храним если хотим скорости.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Всё, что вы хотели знать о HANA, но боялись спросить
СообщениеДобавлено: Пн, ноя 09 2015, 10:39 
Ассистент
Ассистент

Зарегистрирован:
Чт, мар 27 2014, 15:22
Сообщения: 34
Kengur написал(а):
kds а можно полюбопытствовать какие две другие inmemory у вас?

DB2 10.5.4 (BLU-engine) и Oracle 12.1.0.2 (InMemory Option). Оба движка колоночные.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Всё, что вы хотели знать о HANA, но боялись спросить
СообщениеДобавлено: Пн, ноя 09 2015, 10:45 
Ассистент
Ассистент

Зарегистрирован:
Чт, мар 27 2014, 15:22
Сообщения: 34
Dimarik написал(а):
По параллелизации :
Можно попробовать with parameters ('request_flags'='ANALYZE_MODEL')
соответствует hint-у OLAP_PARALLEL_AGGREGATION.

Пробовал оба варианта, рантайм на OLAP-engine одинаковый порядка 55 сек. (выше я писал об этом)
Dimarik написал(а):
По выделению года - читаем BEST PRACTICE в гайдах. Юзаем GC и физ. храним если хотим скорости.

Понятно, что это worst case и "в жизни" никто так не делает. Но вот что есть, то есть.
А "GC" это что ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Всё, что вы хотели знать о HANA, но боялись спросить
СообщениеДобавлено: Пт, ноя 13 2015, 12:46 
Модератор
Модератор

Зарегистрирован:
Чт, окт 21 2010, 08:48
Сообщения: 128
GC = GENERATED COLUMN
Пример из гайда -
Slow querySELECT * FROM T WHERE b * c = 10;
Fast querySELECT * FROM T WHERE bc = 10;
DDL for faster queryALTER TABLE T ADD (bc INTEGER GENERATED ALWAYS AS b * c);

Подобные колонки едят память. Поэтому, это как с индексами в классической БД - необходимо подходить с умом:)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB