Essbase 캐시 및 계산 성능

특히 대규모 계산의 경우 계산 성능을 최적화하기 위해 Essbase는 캐시를 사용하여 메모리 사용을 조정합니다. 계산기 캐시(사용된 경우)가 계산을 최적화할 만큼 충분히 큰지 확인합니다. 인덱스 캐시, 데이터 캐시, 동적 계산기 캐시 및 응용 프로그램 캐시의 관련성을 검토합니다.

큐브를 계산할 때 Essbase는 아웃라인에서 멤버당 약 30바이트의 메모리를 사용합니다. 따라서 큐브에 멤버가 5,000개 있는 경우 Essbase에서 계산하려면 약 150KB의 메모리가 필요합니다.

주:

계산 스크립트를 조합하여 과도한 메모리 사용을 방지할 수 있습니다. 단일 계산 스크립트에서 병렬 계산을 사용하면 성능을 향상시킬 수 있습니다. 병렬 계산 사용을 참조하십시오.

Essbase는 특히 대규모 계산의 경우 메모리를 사용하여 계산 성능을 최적화합니다. 사용된 메모리의 양은 큐브 아웃라인의 크기를 변경하는 것 외에는 제어할 수 없습니다. 그러나 메모리 캐시 크기가 Essbase에서 계산을 최적화하도록 할 수 있습니다.

Essbase는 다음 캐시를 사용하여 메모리 사용을 조정합니다.

  • 계산기 캐시입니다.

    큐브를 처음 계산할 때 계산기 캐시의 크기는 계산 성능에 중요합니다. 가능한 경우 계산기 캐시가 Essbase에서 최적 계산기 캐시 옵션을 사용할 수 있을 만큼 충분히 큰지 확인합니다.

    계산기 캐시 크기 조정을 참조하십시오.

  • 동적 계산기 캐시입니다. 동적 계산기 캐시 크기 조정을 참조하십시오.

  • 인덱스 캐시에 사용됩니다. 큐브가 큰 경우 기본 인덱스 캐시는 최적의 계산 성능을 제공할 만큼 크지 않습니다. INDEXCACHESIZE 애플리케이션 구성 등록 정보 또는 MaxL 데이터베이스 변경 index_cache_size 설정을 참조하십시오.

  • 데이터 캐시입니다. DATACACHESIZE 응용 프로그램 구성 등록 정보 또는 MaxL 데이터베이스 변경 데이터 캐시 크기 설정을 참조하십시오.

  • 데이터 파일 캐시입니다.

  • 애플리케이션 캐시입니다. 하이브리드 모드가 블록 스토리지 큐브에서 사용되는 경우 애플리케이션 캐시를 통해 검색을 위한 메모리 사용량을 관리할 수 있습니다. 응용 프로그램 캐시는 집계 저장 영역 캐시와 유사합니다. 자세한 내용은 집계 저장 영역 캐시를 참조하십시오.

계산기 캐시 크기 조정

Essbase 계산기 캐시를 사용하는 경우 가장 적합한 크기는 아웃라인의 희소 차원 수와 밀도에 따라 달라집니다. 계산기 캐시 비트맵을 이해하면 계산기 캐시 크기를 최적으로 조정할 수 있습니다.

블록 관리를 최적화하기 위해 Essbase는 계산기 캐시 크기에 따라 크기가 제어되는 비트맵을 생성하여 계산 중 데이터 블록을 기록하고 추적할 수 있습니다. 비트맵은 디스크 I/O보다 Essbase에 대해 더 빠른 검색 방법입니다. 특히 큐브를 처음으로 계산하거나 희소 데이터가 있는 큐브를 계산하는 경우 더욱 그렇습니다.

데이터베이스에 희소 차원이 두 개 이상 있고 다음 조건 중 하나도 충족되는 경우 Essbase는 계산기 캐시 비트맵을 사용합니다.

  • 하나 이상의 전체 희소 차원을 계산합니다.

  • 계산 스크립트에서 SET CACHE ALL 명령을 지정합니다.

계산기 캐시 비트맵 정보

계산기 캐시의 경우 Essbase는 희소 차원을 두 그룹으로 구분합니다.

  • 비트맵 차원: Essbase가 가득 찰 때까지 비트맵에 맞는 희소 차원입니다. 비트맵에 배치된 희소 차원의 각 멤버 조합은 1비트의 메모리를 차지합니다. 비트맵에 배치하려면 희소 차원의 모든 멤버 조합에 대해 비트맵에 충분한 공간이 있어야 합니다.

  • 앵커 치수: 데이터베이스 아웃라인에서 비트맵에 맞지 않는 하나 이상의 희소 치수입니다.

Essbase는 아웃라인의 첫번째 희소 차원으로 시작하여 비트맵에 가능한 한 많이 맞습니다. 적합한 치수는 비트맵 치수입니다. 계산기 캐시는 비트맵의 크기를 제어하므로 적합할 수 있는 희소 차원 수는 계산기 캐시의 크기에 따라 달라집니다.

나머지 희소 치수는 앵커 치수입니다. 앵커 차원의 경우 Essbase는 비트맵을 사용하여 블록이 있는지 여부를 확인할 수 없습니다.

앵커 차원 및 비트맵 차원인 차원을 확인하려면 SET MSG DETAIL 계산 명령을 사용하여 애플리케이션 로그에 비트맵 정보를 표시합니다.

가능한 많은 차원을 비트맵에 배치할 수 있도록 아웃라인에서 희소 차원을 주의해서 정렬합니다. 가장 적은 멤버가 포함된 차원으로 시작하고 가장 많은 멤버가 있는 차원이 마지막이 될 때까지 계속합니다. 이 순서를 사용하면 더 많은 치수가 비트맵에 맞춰지므로 계산 성능이 향상됩니다.

주:

아웃라인에서 희소 차원의 순서는 쿼리 성능에도 영향을 줍니다. 성능 최적화를 위한 개요 설계를 참조하십시오.

Essbase는 여러 앵커 차원이 있거나 계산기 캐시가 여러 비트맵을 지원할 만큼 크지 않은 경우 단일 비트맵을 사용하고 하나의 앵커 차원이 있는 경우 여러 비트맵을 사용합니다. 단일 비트맵은 메모리를 가장 적게 사용하지만 여러 비트맵보다 효율성이 떨어집니다.

다중 비트맵은 더 많은 메모리를 사용하지만 단일 비트맵을 사용하는 것보다 빠릅니다. 한 비트맵은 하위 블록을 추적하고 한 비트맵은 상위 블록을 추적합니다. 데이터베이스를 처음 계산할 때는 성능 향상이 특히 중요합니다.

사용되는 비트맵 수는 앵커 차원의 멤버에 대한 최대 종속 상위 수에 따라 결정됩니다. 멤버에는 공유 멤버가 없는 한 종속 상위가 하나 있습니다. 예를 들어, Sample.Basic 데이터베이스의 Product 차원을 고려합니다. 멤버 Cola(100-10)에는 하나의 상위 Colas(100)가 있습니다. 그러나 다이어트 콜라 (100-20)에는 다이어트 음료 (다이어트)와 콜라 (100)라는 두 개의 부모가 있습니다. 두 개 이상의 종속 상위가 있는 제품 멤버가 없습니다. 따라서 제품이 앵커 차원인 경우 최대 종속 상위는 2입니다.

Essbase는 아래 테이블에 표시된 것처럼 계산을 위해 세 가지 옵션 중 하나를 선택합니다.

표 34-2 계산기 캐시 옵션

옵션 방법 성능 순위

1

단일 앵커 치수, 다중 비트맵

1

2

단일 앵커 치수, 단일 비트맵

2

3

다중 앵커 치수, 단일 비트맵

3

Essbase는 계산기 캐시의 크기에 따라 계산에 대한 최적의 성능 방법을 선택합니다. 계산기 캐시 크기가 위 옵션 중 하나에 비해 너무 작은 경우 Essbase는 계산기 캐시를 사용하지 않습니다. 계산 성능이 크게 손상될 수 있습니다.

병렬 계산을 사용으로 설정하면 사용되는 계산기 캐시 옵션이 변경될 수 있습니다. CALCPARALLEL 병렬 계산 및 기타 Essbase 기능 간의 관계를 참조하십시오.

주의:

처음으로 데이터베이스를 계산하는 경우 계산기 캐시의 크기는 계산 성능에 특히 중요합니다. 가능한 경우 계산기 캐시가 Essbase에서 최적 계산기 캐시 옵션을 사용할 수 있을 만큼 충분히 큰지 확인합니다.

계산기 캐시 크기 결정

계산기 캐시의 최적 크기는 시스템이 사용할 수 있는 메모리와 큐브의 특성 및 구성에 따라 달라집니다.

다음 공식을 사용하여 Essbase에 필요한 계산기 캐시 크기를 계산하여 위의 계산기 캐시 옵션 테이블에서 세 가지 옵션 각각을 선택할 수 있습니다.

Calculator cache = Bitmap size in bytes * Number of bitmaps

설명

Bitmap size in bytes = Max ((member combinations on the bitmap dimensions / 8), 4)

및 위치

Number of bitmaps = Maximum number of dependent parents in the anchoring dimension + 2 constant bitmaps

주:

최소 비트맵 크기는 4바이트입니다. (비트맵 차원/8의 멤버 조합)이 4바이트 미만인 경우 Essbase는 4바이트의 비트맵 크기를 사용합니다.

5개의 희소 차원(S1 - S5)이 있는 샘플 큐브를 고려해 보십시오.

표 34-3 예제: 희소 차원이 5개인 샘플 큐브

희소 차원 멤버 수 부양 부모

S1

20

해당 없음

S2

20

해당 없음

S3

50

해당 없음

S4

50

해당 없음

S5

200

3

다음 샘플 계산에 이 샘플 큐브를 사용합니다.

  • 옵션 1: 단일 앵커 치수, 다중 비트맵
  • 옵션 2: 단일 앵커 치수, 단일 비트맵
  • 옵션 3: 다중 앵커 치수, 단일 비트맵

옵션 1: 단일 앵커 치수, 다중 비트맵

이 샘플 계산의 경우 데이터베이스에 대한 다음 팩트를 가정합니다.

  • 비트맵 차원: S1, S2, S3, S4

  • 앵커 치수: S5

  • 앵커 차원의 종속 상위: 3

다음 계산을 수행합니다.

Bitmap size in bytes = (S1 * S2 * S3 * S4) / 8
                     = (20 * 20 * 50 * 50) / 8
                     = 125,000 bytes

Number of bitmaps = Maximum number of dependent parents in the anchoring dimension
                  = + 
                  = 2 constant bitmaps
                  = 3 + 2
                  = 5

Calculator cache = Bitmap size * Number of bitmaps
                 = 125,000 * 5
                 = 625,000 bytes

Essbase가 하나의 앵커 차원과 함께 이 데이터베이스에 대해 여러 비트맵을 사용하려면 계산기 캐시가 625,000바이트여야 합니다.

옵션 2: 단일 앵커 치수, 단일 비트맵

이 샘플 계산의 경우 데이터베이스에 대한 다음 팩트를 가정합니다.

  • 비트맵 차원: S1, S2, S3, S4

  • 앵커 치수: S5

  • 앵커 차원의 종속 상위: 해당 사항 없음

다음 계산을 수행합니다.

Bitmap size in bytes = (S1 * S2 * S3 * S4) / 8
                     = (20 * 20 * 50 * 50) / 8
                     = 125,000 bytes

Number of bitmaps = Single bitmap
                  = 1

Calculator cache = Bitmap size * Number of bitmaps
                 = 125,000 * 1
                 = 125,000 bytes

Essbase가 하나의 앵커 차원과 함께 이 데이터베이스에 대해 단일 비트맵을 사용하려면 계산기 캐시가 125,000바이트여야 합니다.

옵션 3: 다중 앵커 치수, 단일 비트맵

이 샘플 계산의 경우 데이터베이스에 대한 다음 팩트를 가정합니다.

  • 비트맵 차원: S1, S2, S3

  • 앵커 치수: S4, S5

  • 앵커 차원의 종속 상위: 해당 사항 없음

다음 계산을 수행합니다.

다음 계산을 수행합니다.

Bitmap size in bytes = (S1 * S2 * S3) / 8
                     = (20 * 20 * 50) / 8
                     = 2,500 bytes

Number of bitmaps = Single bitmap
                  = 1

Calculator cache = Bitmap size * Number of bitmaps
                 = 2,500 * 1
                 = 2,500 bytes

Essbase에서 여러 앵커 차원이 있는 이 데이터베이스에 대해 단일 비트맵을 사용하려면 계산기 캐시가 2,500바이트여야 합니다.

다음 표에서는 지정된 계산기 캐시 크기에 따라 Essbase에서 사용하는 계산기 캐시 옵션을 보여줍니다.

표 34-4 계산기 캐시 크기 기반 계산기 캐시 옵션 선택

지정된 최소 크기 옵션 선택됨

625,000바이트

옵션 1(최적의 성능 제공)

125,000바이트

옵션 2

2,500바이트각주 1

옵션 3

Footnote 1

계산기 캐시 크기를 2,500바이트 미만으로 지정하면 계산 중에 Essbase에서 계산기 캐시를 사용하지 않습니다. 계산 성능이 크게 손상될 수 있습니다.

계산 스크립트에서 SET MSG 요약 명령을 사용하여 사용할 수 있는 계산기 캐시 옵션 Essbase를 확인할 수 있습니다. 빈 큐브에서 다음 계산 스크립트를 실행합니다.

SET MSG SUMMARY;
CALC ALL;

Essbase는 애플리케이션 로그에 계산기 캐시 설정을 표시합니다. 계산 테스트 및 통계에 대한 SET 명령을 참조하십시오.

지정할 수 있는 최대 계산기 캐시 크기는 200,000,000바이트입니다. 기본값은 200,000바이트입니다. 선택하는 계산기 캐시 크기는 사용 가능한 메모리 및 큐브 구성에 따라 달라집니다.

주:

계산기, 인덱스, 데이터 파일 및 데이터 캐시의 크기는 일반적으로 계산이 집계를 기반으로 하고 공식 계산을 기반으로 하지 않는 경우 성능에 더 큰 영향을 줍니다.

처음으로 큐브를 계산하는 경우 계산기 캐시의 크기가 특히 중요합니다. 가능한 경우 계산기 캐시가 Essbase에서 옵션 1을 사용할 수 있을 만큼 충분히 큰지 확인합니다.

기본 계산기 캐시 크기를 사용하거나 계산 스크립트 내에서 계산기 캐시 크기를 설정할 수 있습니다. 계산 스크립트에서 크기를 설정하면 계산 스크립트 기간 동안에만 설정이 사용됩니다. 계산 스크립트 SET CACHE 명령 및 CALCCACHE 구성 설정을 참조하십시오.

동적 계산기 캐시 크기 조정

열려 있는 각 큐브에 대해 Essbase는 데이터 블록에 대해 동적 계산기 캐시의 영역을 할당합니다. 동적 계산기 캐시가 효과적으로 사용되는지 여부를 확인하려면 응용 프로그램 로그 및 구성 설정을 검토합니다.

동적 계산기 캐시 사용 검토

DYNCALCCACHEMAXSIZE 구성 설정은 Essbase 서버에서 각 동적 계산기 캐시의 최대 크기를 지정합니다. 기본적으로 크기는 20MB로 설정됩니다. Essbase는 DYNCALCACHEMAXSIZE 설정으로 지정된 최대 메모리 영역이 할당될 때까지 데이터 블록에 대한 동적 계산기 캐시의 영역을 할당합니다.

Essbase는 각 데이터 검색에 대해 애플리케이션 로그에 두 개의 메시지를 기록합니다. 다음(잘린) 예에서 첫번째 메시지는 검색에 필요한 총 시간을 설명합니다.

[2024-07-27T16:43:52.707+00:00] ... [EXEC_TIME: 0.53] Regular extractor completed successfully
[2024-07-27T16:43:52.707+00:00] ... Regular Extractor Big Block Allocs -- Dyn.Calc.Cache : [30] non-Dyn.Calc.Cache : [0]

동적 계산기 캐시가 사용되는 경우 두 번째 메시지에는 데이터 계산기 캐시 내에서 계산된 블록 수(Dyn.Calc.Cache: [n])와 동적 계산기 캐시 외부의 메모리에서 계산된 블록 수가 표시됩니다(비Dyn.Calc.Cache: [n]).

동적 계산기 캐시가 효과적으로 사용되는지 여부를 확인하려면 두 메시지를 모두 검토하고 구성 설정을 고려합니다. 예를 들어, 동적 계산기 캐시 외부 및 동적 계산기 캐시에서 블록이 계산되었음을 나타내는 경우 DYNCALCCACHEMAXSIZE 설정을 늘릴 수 있습니다.

지정된 최대 크기가 허용 가능한 크기이고 계산기 캐시 외부의 메모리를 사용하여 동적으로 계산된 검색을 완료하면 허용할 수 없는 지연이 발생하는 경우 DYNCALCCACHEWAITFORBLK를 TRUE로 설정합니다.

성능 통계 문법과 함께 질의 데이터베이스 MaxL 문을 사용하여 동적 계산기 캐시 작업에 대한 요약을 볼 수 있습니다.

동적 계산기 캐시 크기 변경

동적 계산기 캐시와 관련된 다섯 가지 구성 설정이 있습니다. 이러한 설정의 최적 값은 Essbase 서버 컴퓨터의 메모리, Essbase 데이터베이스 구성 및 사용자 쿼리의 특성에 따라 달라집니다.

각 구성 설정에 대한 다음 설명에는 시스템 값을 결정하는 방법에 대한 권장 사항이 포함되어 있습니다. 사이트의 고유한 요구 사항에 맞게 설정을 테스트하고 조정해야 할 수 있습니다.

  • DYNCALCCACHEMAXSIZE: 이 설정은 각 동적 계산기 캐시에 Essbase가 할당할 수 있는 최대 크기를 지정합니다.

    권장 설정 값 = C * S * U.

    • C는 하나의 블록을 계산할 때 Essbase가 수정해야 하는 최대 블록 수(주소 지정 가능성 설정)의 값입니다. 일반적으로 값 100은 이 값에 대한 근사값입니다. 공식 계산에서 매우 많은 수의 하위 항목을 통합하는 경우 이 숫자는 더 큰 숫자가 될 수 있습니다.

    • S는 Essbase 서버 시스템의 모든 데이터베이스에서 확장된 가장 큰 블록의 크기입니다. 확장된 블록 크기를 계산하려면 각 밀집 차원의 멤버 수(동적 계산 멤버 및 동적 시계열 멤버 포함)를 블록의 셀 수에 곱하고 셀 수에 각 멤버 셀의 크기(8바이트)를 곱합니다.

      예를 들어, Sample.Basic의 밀집 차원에서 멤버 수를 고려합니다(레이블만 멤버는 계산되지 않음).

      • 19(12개의 저장된 멤버와 7개의 동적 계산 멤버(HTD 및 QTD 포함)

      • 14(8개의 저장된 멤버와 6개의 동적 계산 멤버가 있는 측정)

      • 4(시나리오, 저장된 멤버 2개 및 동적 계산 멤버 2개 포함)

      S = 19 * 14 * 4 셀(8바이트/셀) = 블록당 8512바이트

      이 숫자는 응용 프로그램 로그에 논리적 블록 크기로 표시됩니다.

    • U는 동시 사용자 수가 가장 많은 데이터베이스에서 예상되는 최대 동시 사용자 수입니다.

      DYNCALCACHEMAXSIZE에 값 0(영)을 지정하면 Essbase에서 동적 계산기 캐시를 사용하지 않습니다.

      기본적으로 이 값의 크기는 20MB(20,971,520바이트)입니다.

  • DYNCALCCACHEWAITFORBLK: Essbase가 동적 계산기 캐시에 할당된 모든 영역을 사용하는 경우 이 설정을 통해 Essbase는 캐시에서 공간을 사용할 수 있을 때까지 기다리거나 캐시 외부의 메모리에 있는 블록을 즉시 쓰고 계산할지 여부를 알 수 있습니다. 캐시가 너무 작으면 여러 스레드가 대기열에 있을 수 있습니다.

    권장 설정 값은 FALSE(기본값)입니다.

    TRUE로 설정하기 전에 다음 대안을 사용해 보십시오.

    • 서버 시스템에 물리적 메모리 추가

    • 동적 계산기 캐시에 더 이상 메모리를 사용할 수 없는지 확인할 때까지 DYNCALCCACHEMAXSIZE, test 및 repeat 값을 늘립니다.

  • DYNCALCCACHEBLKTIMEOUT: Essbase가 동적 계산기 캐시에서 사용 가능한 공간을 기다리는 경우 이 설정은 대기 시간을 정의합니다.

    권장 설정 값은 WT/B입니다.

    • WT는 질의에 대한 허용 가능한 최대 대기 시간(예: 5초)입니다.

    • B는 가장 큰 query에서 액세스한 총 논리적 블록 수입니다.

      B의 값을 확인하려면 애플리케이션 로그의 메시지에서 쿼리에 대한 Dyn.Calc.Cache "Big Block Allocs"의 가장 큰 수를 확인하십시오.

  • DYNCALCCACHEBLKRELEASE: Essbase가 지정된 시간을 기다렸지만 동적 계산기 캐시에서 아직 공간을 사용할 수 없는 경우 이 설정은 Essbase에게 동적 계산기 캐시 바로 외부에서 블록을 쓰고 계산할지 아니면 블록을 교체하고 버퍼에서 교체된 블록을 일시적으로 압축하여 공간을 생성할지 알려줍니다.

    권장 설정 값은 FALSE(기본값)입니다.

    심각한 메모리 부족 문제가 발생한 경우에만 TRUE로 설정합니다.

  • DYNCALCCACHECOMPRBLKBUFSIZE: Essbase가 지정된 대기 시간을 기다렸고 DYNCALCCACHEBLKRELEASE 설정이 TRUE인 경우 이 설정은 동적 계산기 캐시 압축 블록 버퍼의 크기입니다.

    권장 설정 값 = (C * S) / 2

    여기서 C는 한 블록을 계산할 때 Essbase에서 수정해야 하는 최대 블록 수 값(주소 지정 가능)이고 S는 컴퓨터의 모든 데이터베이스에서 가장 큰 확장 블록의 크기입니다. 설명 또는 DYNCALCCACHEMAXSIZE 설정과 동일한 방법으로 C 및 S를 계산합니다.