Основные настройки конфигурационного файла EssBase.cfg

Применять данные настройки рекомендуются в старте проекта, что бы модели настраивались с учетом влияния изменения поведения Essbase CFG.Некоторые из этих настроек следует пересматривать для оптимизации одновременной работы сверхбольших и средних приложений, так как могут внести некоторые неожиданности в поведении EssBase (особенно на больших и нагруженных базах)

  • AGENTLOGMESSAGELEVEL уровень детализации логов ( ERROR)
  • CSSSYNCLEVEL синхронизирует безопасность при перезапуске сервера (auto)
  • AGTSVRCONNECTIONS – определяет кол-во начальных потоков между агентом и приложением. (5)
  • AGENTTHREADS – определяет общее кол-во потоков агента (40)
  • SERVERTHREADS – определяет общее кол-во потоков OLAP приложения (200)
  • EXPORTTHREADS  – увеличивает число потоков при выгрузке данных в текстовый файл –
  • LOCKTIMEOUT – время блокировки при операции Lock (обычно возникает в SS клиенте) (600)
  • MULTIPLEBITMAPMEMCHECK принудительно переключает распределение памяти в кеше калькулятора в однопоточный режим, если хоть раз было переполнение в многопоточном (TRUE)
  • PARCALCMULTIPLEBITMAPMEMOPT оптимизирует работу памяти в кеше калькулятора (TRUE)
  • CALCCACHE – управляет кешем калькулятора. Для операций CalcDim и AGG в скрипте имеет смысл пробовать SET CALCCACHE OFF;

    CALCCACHE TRUE
    CALCCACHEHIGH 200000000
    CALCCACHEDEFAULT 75000000
    CALCCACHELOW 2000000

  • CALCLOCKBLOCK % – сколько фиксировать блоков в памяти при расчете

    CALCLOCKBLOCKHIGH 4000
    CALCLOCKBLOCKDEFAULT 2000
    CALCLOCKBLOCKLOW 1000

  • CALCOPTFRMLBOTTOM переключает сервер в блочный режим расчета (UP)
  • DATAEXPORTENABLEBATCHINSERT упаравляет процессом выгрузки данных в БД
  • CALCPARALLEL определяет кол-во потоков при параллельном расчете (1)
  • CALCTASKDIMS Определяет количество разряженных направлений (выбираются снизу – вверх), элементы которых будут участвовать в распараллеливании
  • DYNCALCCACHEWAITFORBLK определяет ждать ли кеш калькулятора, при переполнении (FALSE/TRUE)
  • DYNCALCCACHEMAXSIZE Определяет память выделяемую под динамический кеш калькулятора (200M)
  • DELAYEDRECOVERY определяет поведение EssBase по очистке места при аварийном завершении работы (FALSE)
  • GRIDEXPANSION  – управляет ретривом для прозрачных партиций (ON/OFF)
  • QRYGOVEXECTIME задает макс время работы отчета (600)
  • QRYGOVEXECBLK задает макс число блоков разрешенных для доступа в одном отчете (100000)
  • PIPEBUFFERSIZE задает размер буффера используемого между Spreadsheet Extractor и Report Writer. (65534)
  • VLBREPORT рекомендует EssBase автоматически определять размер буфера (100 KB – 10 MB) для запросов ( исключая Dynamic Calc, attribute, Dynamic Time Series members) (TRUE/FALSE)
  • SUPNA схлопывает миссинг блоки на стороне сервера (ON)
  • NO_HOSTNAME_LISTCONNECT запрещает писать в логи FQDN имена, повышает производительность если есть проблемы с DNS (TRUE)
  • MEMSCALINGFACTOR множитель распределения памяти для 64bit систем
  • DYNCALCCACHECOMPRBLKBUFSIZE Определяет размер временного буфера для хранения сжатых блоков для расширения размера кеша динамического калькулятора (200000)

    ; настраиваем загрузку данных из внешних источников DLSINGLETHREADPERSTAGE TRUE
    DLTHREADSPREPARE 3
    DLTHREADSWRITE 4

  • CalcLimitFormulaRecursion предотвращает выполнениея сложных, взимосвязаных формул. Указывает разработчику на ошибки (TRUE).
  • NETDELAY сетевое время ожидание клиента (800)
  • NETRETRYCOUNT количество попыток в разрешении сетевых ошибок (1000)
  • NETTCPCONNECTRETRYCOUNT кол-во попыток восстановления TCP соединений (20)

Количество баз данных в одном приложении Essbase

Разрешено до 4-x баз в приложении, но рекомендуемое значение – 1, так как только в этом случае избегаются риски, связанные с тем, что Essbase запускает отдельный обслуживающий процесс для каждого приложения (не для БД):

  • Утилизация памяти (актуально для 32 битной версии) – нельзя выйти за порог 2GB для одного приложения.
  • Конкурентные обслуживающие процессы по перестройке (restructure) БД, обновлению метаданных, выгрузке данных
  • Единая точка восстановления, при возникновении XCP события в одном из кубов – страдают все соседи по приложению.
  • Конкуренции связанные с работой обслуживающего сервиса – Essbase Agent – он поддерживает параллельную работу только для приложений (не для БД )
  • Блокировка изменений системных настроек одного куба при конкурентной активности (расчет, выгрузка) в соседнем кубе.
  • Один поток на приложение по выгрузке данных
  • Один лог файл на приложение.

Но, если приложение не использует EPMA для хранения и разделения направлений, то является допустимым совмещение в одном приложении нескольких БД  для решения задач разделения метаданных и данных.

По дороге %ARborPath%

Описание основных бинарных и служебных файлов Essbase

Хранимые в \arborpath\bin

  • Essbase.exe     серверный агент процесса Essbase
  • Esssvr.exe     основной процесс . Хранитель OLAP приложения
  • Essmsh.exe     maxl shell скрипт
  • Esscmd.exe     интерфейс командной строки Esscmd
  • Bak          резервная копия файла безопасности
  • bnd        Microsoft ODBC файл для SQL интерфейса используемого в DB2
  • cfg        конфигурационный файл
  • cnt        Online help contents file
  • cpl        Microsoft ODBC driver for Windows platforms
  • dll        Microsoft Windows Dynamic Link Library
  • eqd        Query Designer files
  • exe        Executable file
  • hlp        Online help file
  • lck        Lock file
  • lic        License information file for ODBC
  • pl        Sample Perl script
  • pm        Perl Module
  • mdb        Message database file
  • sec        Security file
  • sl        HP-UX shared library file
  • so        Solaris shared library file
  • xll        Spreadsheet Add-in for Microsoft Excel

 

Расширенная статистика куба Essbase

Ниже представлен набор расчетных статистик куба Essbase, которые помогают оценить корректность выбора Dense направлений.

Основные показатели статистики получаем с помощью команд EssCMD, для оценки можно использовать приложенный шаблон

  • GETDBINFO
  • GETDBSTATS
  • LISTFILES 3

Block Ratio (between Level0 and Upper level) = Upper-Level/ Level0

Пограничные значения 0<10<20

Высокие значения говорят о том, что нужно разбавлять sparce элементы динамическими агрегатами.

Total existing blocks = Level0 + Upper-Level

(промежуточный показатель )

Block Density = DB Stats

Хранит в себе средний процент каждого блока, в котором содержится данные. В целом данные разряженные, поэтому значение более 1% на самом деле очень хорошо, eсли более 5%, – у Вас настройки Dense/SparseDense/Sparse оптимальны. Хранится в %, в расчетах участвует как доля от 1.

Пограничные значения 0<0.25<1

Index File Size (estimation) = Total existing blocks * 122/(1024*1024*1024)

(промежуточный показатель )

Index File Size (reality) = DB Stats Index File Size /(1024*1024*1024)

(промежуточный показатель )

Estimated fragmentation Index = Index File Size (estimation) / Index File Size (reality)

Пограничные значения 0<0.25<1

Block Size = Count of Stored Member on Dense 1 Dim * Count of Stored Member on Dense N Dim * 8 Byte

(промежуточный показатель )

Data File Size (estimation) =

RLE=”YES”;( Total existing blocks *(72+((1,5* Block Density *((Block Size)))))/(1024*1024*1024);

ZLIB =”YES”;( Total existing blocks *(72+(((Block Size)/64)))/(1024*1024*1024);

BitMap =”YES”; ( Total existing blocks *(72+((( Block Size)/64)))/(1024*1024*1024)))

(промежуточный показатель )

Data File Size (reality) = DB Stats Data File Size /(1024*1024*1024)

(промежуточный показатель )

Estimated fragmentation Data = Data File Size (estimation) / Data File Size (reality)

Пограничные значения 0 <0.25<1

Estimated Avg fragmentation = (Estimated fragmentation Index + Estimated fragmentation Data ) /2

Пограничные значения 0 <0.25<1

Db Total Size (without any compression) = (
Total existing blocks * (72+( Block Size )/(1024*1024*1024))

Db Total Size = Index File Size (reality) + Data File Size (reality)

Compression rate = Db Total Size (without any compression)/
Db Total Size (промежуточный показатель )

Sparsity level = ЕСЛИ(Block Density <0,05;”Extremely sparse”;ЕСЛИ(И(0,05< Block Density; Block Density <0,15);”Sparse”;”Dense”))

Block Nature = ЕСЛИ(ИЛИ(Block Ratio (between Level0 and Upper level) >15; Estimated fragmentation Data >0,2);”A lot of #Mi”;”A lot of Data”)

Определение среза данных

 

Идентификация значений в многомерной базе данных

В данном разделе излагается принцип хранения информации в многомерной базе данных – в ячейках, содержащих значения и организованных в виде куба. Каждое значение хранится в отдельной ячейке. Ссылка на конкретное значение осуществляется путем указания его координат по каждому аналитическому направлению.

У приведенной базы данных три аналитических направления: Счета (Accounts), Период (Time) и Сценарий (Scenario). У аналитического направления Счета четыре элемента: Продажи (Sales), Стоимость проданных товаров (COGS – Cost of Goods Sold), Маржа (Margin), Процент маржи (Margin%). Аналитическое направление Time состоит из четырех кварталов. В данном примере рассматривается только элементы первого квартала – Qtr1. У аналитического направления Scenario два дочерних элемента: Budget для плановых значений и Actual для фактических. На каждом пересечении аналитических направлений возникает один элемент базы данных. В нашем примере аналитических направлений три; их и значения их данных можно представить в виде куба, как на рисунке :

Выделенные ячейки на рисунке показывают, что в случае с элементом Sales мы имеем дело со срезом базы данных, содержащим восемь значений, связанных с продажами:

Фактические продажи (Actual Sales) в нашем примере представлены четырьмя значениями:

Каждое значение хранится в отдельной ячейке базы данных. Чтобы обозначить определенное значение в многомерной базе данных, нужно указать его элемент по каждому аналитическому направлению. На рисунке выделена ячейка, содержащая значение фактических продаж за январь (Sales,Jan,Actual). Это же значение может быть обозначено и как Sales,Actual,Jan или, с помощью оператора пересечения аналитических направлений (->): Sales->Actual->Jan.