DOS CMD - дождаться завершения сценариев параллельной оболочки MAXL - PullRequest
0 голосов
/ 13 февраля 2020

Я тестирую загрузку данных в Essbase Cube через Load_Buffer. Целью здесь является параллельная загрузка данных и последующая фиксация данных. В настоящее время самый быстрый подход, который я нашел, это запуск правила загрузки SQL самостоятельно через MAXL. Я также пытался использовать MAXL «использование нескольких rules_files», и это заняло еще больше времени.

В Oracle Руководстве администратора базы данных Essbase упоминается, что вы можете загружать данные в буфер для повышения скорости параллельно. Для этого мне нужно запустить 3 оболочки MAXL одновременно в load_buffer.

Проблема, с которой я сталкиваюсь, заключается в том, что данные C, M и R выполняются в разное время в: SUB_ C. Правило C имеет 12 миллионов записей, Правило M имеет 10,5 млн., А Правило R имеет 15 млн. Я ожидал, что Data R завершится последним, но правило C сохранилось, и процедура перешла к фиксации изменения в: SUB_E до загрузки всех данных.

С текущим правилом загрузки SQL время выполнения составляет около 333 секунд. С load_buffer (когда он работает) время выполнения достигает 450 секунд. Каждое правило загрузки самостоятельно (C, M, R) занимает 100,96 и 220 секунд.

Вот мой код:

SET $1-$9 (Parameters 1-9)
CALL    :SUB_A
CALL    :SUB_B
CALL    :SUB_C
CALL    :SUB_D
CALL    :SUB_E
CALL    :SUB_F

GOTO    :EOF

:SUB_A
    ECHO STARTING_REBUILD_%$4%- Started at %time% on %date% > D:\Logs\Rebuild_%$4%_Start.log
EXIT /B

:SUB_B
    REM DIMENSION BUILDS
    ECHO STARTING REBUILD_%$4%
    START "REBUILD %$4%" /W CMD /c D:\Oracle\Middleware\user_projects\epmsystem1\EssbaseServer\essbaseserver1\bin\startMaxl.bat Rebuild_%$4%.msh %$1% %$2% %$3% %$4% %$5% %$6% %$7% %$8% %$9%
    ECHO ENDING REBUILD_%$4%
EXIT /B

:SUB_C
REM DATA LOADS USING LOAD_BUFFER - After a lot of research, these loads tend to end at different times and skip to the next section so parallel won't work
    START "DATA_C %$4%" CMD /c D:\Oracle\Middleware\user_projects\epmsystem1\EssbaseServer\essbaseserver1\bin\startMaxl.bat Rebuild_%$4%_Data_C.msh %$1% %$2% %$3% %$4% %$5% %$6% %$7% %$8% %$9%
    START "DATA_M %$4%" /W CMD /c D:\Oracle\Middleware\user_projects\epmsystem1\EssbaseServer\essbaseserver1\bin\startMaxl.bat Rebuild_%$4%_Data_M.msh %$1% %$2% %$3% %$4% %$5% %$6% %$7% %$8% %$9%
    START "DATA_R %$4%" /W CMD /c D:\Oracle\Middleware\user_projects\epmsystem1\EssbaseServer\essbaseserver1\bin\startMaxl.bat Rebuild_%$4%_Data_R.msh %$1% %$2% %$3% %$4% %$5% %$6% %$7% %$8% %$9%
EXIT /B

:SUB_D
REM - Test
EXIT /B

:SUB_E
    REM COMMIT DATA
    START "COMMIT %$4%" /W CMD /c D:\Oracle\Middleware\user_projects\epmsystem1\EssbaseServer\essbaseserver1\bin\startMaxl.bat Rebuild_%$4%_Data_Z.msh %$1% %$2% %$3% %$4% %$5% %$6% %$7% %$8% %$9%
EXIT /B


:SUB_F
    ECHO ENDING_REBUILD_%$4%- Ending at %time% on %date% > D:\Logs\Rebuild_%$4%_End.log
EXIT /B

:EOF
...