вторник, 17 апреля 2012 г.

Ограничения Bex Analyzer \ Bex Web Report

Analysis Office

Bex Analyzer
Note 1040454 - Front-end memory requirement of the BEx Analyzer
Если коротко, то формула следующая mem = 100MB + (#rows x #columns) x 0.0016 MB

Т.к. у .NET framework есть ограничение в 1.2 Gb, то Bex максимум может вывести 750,000 ячеек

mem = 100MB+(750000)*0.0016 = 1300MB что эквивалентно 1.2GB

Есть ещё парамеры ANALYZER_LIMIT_MAX и ANALYZER_LIMIT_MAX, но они несут ограничение, а не решение... :( Note 1411545 - BExAnalyzer: safety belt for large resultsets

wiki:WorkBook+Extension+issues,.XLS,.XLSM,.XLSX
В общем пока не будет 64'bit BEx'a, это будет ограничение системы непреодолимой силы - немного тестов по памяти для .Net
Совместимость компонентов

Java Bex Web Report

Основная нота - 1127156 - Safety belt: Result set is too large, которая описывает два параметра BICS_DA_RESULT_SET_LIMIT_DEF и BICS_DA_RESULT_SET_LIMIT_MAX


По умолчанию эти параметры имееют ограничение 500 000 ячеек. (пример увеличения)

Мы пробовали увеличивать этот параметр, но при этом получали JAVA-ошибку - Out of memory.
Формула расчета памяти для JAVA (описано в ноте 927530):

Memory = #result cells * 0.8 KB + #displayed cells * 5 KB

Example:
As a result, for example, a report with 10000 lines and 10 columns requires about 80 MB in the Java heap just for the representation of the result set. In addition, to display 100 lines from the result set requires about 5 MB. If you reduce the result set from 10000 lines to only 1000 lines, this reduces the entire memory requirement from 85 MB to 13 MB.

Я взял за основу 15 000 000, получается, что
на result set - хранения в памяти нам надо 12Гб
на отображении - пусть даже 1\4 части - 3 750 000, надо 18Гб
Итого, 30Гб на отчет из 15млн, с отображением 4 Млн ячеек

На JAVA поставили ограничение 3,5 Гб. Можно было бы поставать и больше, т.к. у нас 64-битная система (для 32 битных есть ограничение 1,3Гб, ноту не помню). Но тогда из за особенности garbage collector'a JAVA существенно замедлится, при условии что JAVA и так не быстра, это практически клинч.

Правда есть небольшой выход - padding


Сейчас уже не вспомню, но где то SAP писал, что желательно не больше 100 строк на экране.

Дальше хуже,

To determine the worst-case estimate, multiply this number of users by the memory requirement of the largest report (in relation to its result set).

Есть небольшое решение, но тогда мы по сути лишаемся кэша на стороне JAVA и при каждом теледвижении будет происходить запрос в базу, вычисления и передача данных.

We will provide an optimization of the memory requirement in the next Support Package Stack. With this optimization, you can display a report as "stateless", so that the system can then immediately release the memory that is required to set up the result set. Although this does not reduce the requirement for an individual report, but the memory no longer remains bound to the user for a long time. In the multiuser mode, the time period for which you need to determine concurrent users is reduced from the time that is defined by the TIMEOUT option to a few seconds.

И ещё момент... в отчете было много 0-х строк, условие на их сжатие в отчете стояло. Столкнулись с тем, что при выходе из OLAP - было 2900000 ячеек и по safety belt пользователь получал отлуп. Хотя если тот же отчет запускать в Bex - сжатый результат был порядка 300 000 ячеек.


SAP BusinessObjects Advanced Analysis for Excel

При выводе смотрит на safetyBelt (BICS_DA_RESULT_SET_LIMIT_MAX) - т.е. 500 000, ну или что у Вас задано. Можно заставить не смотреть, через ключ в реестре - HKEY_CURRENT_USER\Software\SAP\AdvancedAnalysis\Settings\DataSource\ResultSetSizeLimit = -1, n or empty (default). Но т.к. штука похоже писана на .Net - упремся в 1.2Gb.
Одна надежда что с появлением 64 битных систем, появятся и инструменты соответствующие им.

https://wiki.scn.sap.com/wiki/display/BI/Analysis+for+Office+2.x+-+Data+Cells+Limit+and+Memory+Consumption – Afe 2.x memory consumption
http://www.decisionmodels.com/memlimitsc.htm - unofficial info about Excel data
https://support.microsoft.com/en-gb/help/3160741/large-address-aware-capability-change-for-excel – official



Пока не забыл, ссылка на все параметры RSADMIN - Note 912367 - Composite Note: RSADMIN Parameter

Хм, есть методика преодоления ограничения на 1.2 Gb в windows. Надо будет попробовать, когда будет время...
link1
link2 - искать пост "1. Add /3GB switch to boot.ini (Start->Control"
link3

Комментариев нет: