Текущее время: Вс, авг 24 2025, 00:10

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




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Производительность отчета на большом кубе
СообщениеДобавлено: Ср, апр 17 2013, 06:40 
Ассистент
Ассистент

Зарегистрирован:
Пт, сен 11 2009, 12:39
Сообщения: 41
Есть большой куб с 10 признаками и 20 показателями с кучей атрибутов, c объемом ~80млн строк. Ежедневная загрузка новых данных ~120т строк. Данные нагружены за 2 года. БД Оракл 10, памяти 8Гб, Винд, рейд на дисковом массиве, процы Ксеон. Куб сжат. Таблица F пустая. Каждый признак находиться в отдельном измерении, измерения небольшие относительно основного куба.

Есть отчет на этом кубе, время работы отчета неприлично долго. Во время работы в Оракле висит событие "последовательное чтение". Создаем агрегаты, лучше, но все равно долго. Удалили агрегаты. Акселератор пока не будем смотреть.
Смотрим Таблицу Е партицированна по месяцу. Изменяем Таблицу Е, удаляем лишние месяца, оставляя пока толька нужные нам месяца, сразу выделяем нужный размер партиции. Смотрим, лучше, но не достаточно. Ставим количество паралелльных количество потоков 8 (сервер должен правильно настроен!!!). Время работы доходит до 1-1,5 мин если делать за весь период, железо тянет. Нас устраивает, но можно еще. Идеи еще есть, выложу позже. Вот как-то так можно добиться проиводительность.

ВНИМАНИЕ. Если вы будете планировать подобные действия со своей базой, убедитесь что есть бекапы и вы сможете с них восстановиться. И учесть возможность железа, настройки БД.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Производительность отчета на большом кубе
СообщениеДобавлено: Ср, апр 17 2013, 06:42 
Ассистент
Ассистент

Зарегистрирован:
Пт, сен 11 2009, 12:39
Сообщения: 41
И остался один вопрос. Почему пользователь оставляет два показателя в отчете. В БД идет расчет по все показателям.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Производительность отчета на большом кубе
СообщениеДобавлено: Ср, апр 17 2013, 07:23 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вс, янв 11 2009, 14:41
Сообщения: 902
Откуда: Москва
Пол: Мужской
1. Если план выполнения запроса показывает full scan, то этому может быть несколько причин:

- отсутствуют или невалидны индексы (что маловероятно, особенно на E-таблице)
- неактуальна/не собрана/собирается недостаточно часто статистика на уровне Oracle
- читается слишком много данных (оптимизатор Oracle принимает решение читать full scan-ом всю таблицу, а не индексы, несмотря на актуальную статистику; раз у вас таблица партицирована по календарному месяцу, и он используется в качестве ограничения в фильтре, то наиболее вероятен вариант full scan партиции/партиций)
- выводится слишком много данных (то есть большая часть времени уходит на формирование самого отчета, а не на извлечение из DB - это конечно не причина full scan-а, но тоже может существенно влиять на общее время отклика с момента ввода параметров до получения результата)
- запрос в BEX построен неоптимально

Большую часть вопросов можно проверить при отладке запроса в RSRT

2. Ну значит пользователю нужны только эти два показателя. Что уж тут поделать! :) Либо эти два показателя вычисляются на основе других, либо пользователь хочет видеть только эти два показателя в начальном ракурсе, но иметь возможность, при желании, отобразить и остальные в процессе навигации (если это было предусмотрено в настройках запроса)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Производительность отчета на большом кубе
СообщениеДобавлено: Пт, апр 19 2013, 11:07 
Ассистент
Ассистент

Зарегистрирован:
Пт, сен 11 2009, 12:39
Сообщения: 41
murmur написал:
запрос в BEX построен неоптимально
Большую часть вопросов можно проверить при отладке запроса в RSRT
2. Ну значит пользователю нужны только эти два показателя. Что уж тут поделать! :) Либо эти два показателя вычисляются на основе других, либо пользователь хочет видеть только эти два показателя в начальном ракурсе, но иметь возможность, при желании, отобразить и остальные в процессе навигации (если это было предусмотрено в настройках запроса)

Индексы, статистика - это первое что было проверено. Вычисляемых покателей нет(пока).
В измерениях данных немного, в отчет тоже выводиться данных немного, в основном они все агрегируются. Да и на самом отчете стоит ограничение 1 млн. яйчеек. Поэтому и идет full scan, вопрос только был какой индексный или табличный full scan. Выяснили, что табличный, вот и выставили распараллеливание.
Планируем в дальшейшем переместить в отдельное ТП с большим размером блока, индексы подтюнить. Пока смотрим и собираем информацию об долгоиграющих отчетах.
Можно по подробнее как "запрос в BEX построен неоптимально", может мы что-то пропустили.
Увидели еще интересную вещь, если пользователь оставляет в отчете несколько нужных показателей (не вычисляемых) без признаков, всегда идет расчет всех показателей, и помимо этого ВСЕГДА считается count() и идет группировка по sid_ounit. А все это дополнительная и не нужная нагрузка.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Производительность отчета на большом кубе
СообщениеДобавлено: Пт, апр 19 2013, 11:51 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вс, янв 11 2009, 14:41
Сообщения: 902
Откуда: Москва
Пол: Мужской
[cb] написал(а):
В измерениях данных немного, в отчет тоже выводиться данных немного, в основном они все агрегируются.
1. Сколько записей в % отношении (или абсолютном) извлекается по отношению к общему количеству записей в кубе?
2. Сколько записей в % отношении (или абсолютном) выводится в отчете по отношению к извлекаемому количеству?
Рассчитав эти показатели можно понять целесообразность создания агрегатов и понять причину full scan. А оперировать терминами "немного" и "в основном они агрегируются" - это разговор ни о чем.

[cb] написал(а):
Да и на самом отчете стоит ограничение 1 млн. яйчеек.
Это что еще за ограничение такое?!

[cb] написал(а):
Можно по подробнее как "запрос в BEX построен неоптимально", может мы что-то пропустили.
Не видя структуру запроса давать какие-то советы почти бессмысленно. Самое простое - может у вас там в ограничениях много исключений (что приводит к OR-инструкциям на уровне БД и отключению индексов), а может у вас ограничения стоят в основном на показателях, а не в фильтре, при этом сам запрос может разделяться на подзапросы (это зависит от ограниченных показателей, имеет смысл запустить ST05 трассировку и оценить планы и время выполнения запросов, сравнить с планами и временем, которые RSRT выдает, кэш при этом лучше отключать или сбрасывать). А может у вас там виртуальные признаки и показатели используются. А еще может в свойствах запроса стоять извлечение всех данных фильтра, а не только тех, которые нужны для навигации и отображения данных. Короче, это просто практика, тут самим надо ковыряться, понимая почему данные извлекаются именно так, а не иначе

[cb] написал(а):
Увидели еще интересную вещь, если пользователь оставляет в отчете несколько нужных показателей (не вычисляемых) без признаков, всегда идет расчет всех показателей, и помимо этого ВСЕГДА считается count() и идет группировка по sid_ounit. А все это дополнительная и не нужная нагрузка.
Попробуйте NODIM() использовать, как вариант.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Производительность отчета на большом кубе
СообщениеДобавлено: Вт, апр 23 2013, 09:25 
Ассистент
Ассистент

Зарегистрирован:
Пт, сен 11 2009, 12:39
Сообщения: 41
murmur написал:
Это что еще за ограничение такое?!
Note 1127156

В каком курсе или best practics можно подробно почитать про RSRT.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Производительность отчета на большом кубе
СообщениеДобавлено: Вт, апр 23 2013, 09:47 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вс, янв 11 2009, 14:41
Сообщения: 902
Откуда: Москва
Пол: Мужской
[cb] написал(а):
murmur написал:
Это что еще за ограничение такое?!
Note 1127156
Вряд ли можно считать сообщение "Result set is too large; data retrieval restricted by configuration" решением проблемы выполнения тяжелых отчетов :wink:

[cb] написал(а):
В каком курсе или best practics можно подробно почитать про RSRT.
Основное - в BW360 и TBW42_1.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Производительность отчета на большом кубе
СообщениеДобавлено: Вт, апр 23 2013, 10:19 
Ассистент
Ассистент

Зарегистрирован:
Пт, сен 11 2009, 12:39
Сообщения: 41
Нет, но в ноте описано как установить "maximum number of cells for the result set". У нас стоит 1млн в BEX Web.

Спасибо =))


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Производительность отчета на большом кубе
СообщениеДобавлено: Вт, май 14 2013, 23:50 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 13 2005, 10:41
Сообщения: 558
Откуда: Гондурас (округ Москвы)
Пол: Мужской
ассистент, вы для начала уберите все расчетные показатели из отчета, все виртуальные показатели отключите.
лучше скопировать отчет конечно, чтобы продуктив не ломать. кроме того, раз уж вы партицируете по месяцам, то переменная должна быть в глобальном фильтре по месяцу или user-exit или обязательная для ввода.

и еще, что у вас там, есть аналитик, который в состоянии проанализировать отчет из миллиона ячеек??? давайте его нам, есть работа)


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

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


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

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


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

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