目次
検証の背景
ここ数年SAPプロジェクトでは、Code Pushdownの考え方で業務ロジックを設計し、ABAP CDS Viewによる実装が一般的になりつつあります。単体テストの少量データで正常動作したものが、システムテスト、性能テストで本番想定のデータ量で動かそうとすると、SAP HANA Database(HDB)でメモリ不足によるエラーが発生して、動作できなくなってしまうケースを、複数のプロジェクトで目の当たりにし、また、人伝に聞きます。
メモリ消費を抑えるための定石は、Viewに実装しているロジックを再確認して、洗練されたロジックに置き換えます。しかしながら、洗練されたロジックは要件によりケースバイケースになり一概に比較が難しいです。今回はロジックの見直しは行わず、同一ロジックをHANA Information View(HANA View)に置き換える方法をとり、メモリ消費が抑えられるかどうかを比較検証します。
検証方法
今回は、SAP標準テーブル:ACDOCA:ユニバーサルジャーナルより、以下処理の結果を表示します。(ピボットテーブルで各種分析できる出力形式を目指します)
- 月次集計(四半期、半期、通期集計含む)
- BS残高(累計値)計算(PLは増減値、BSは累計値の切替含む)
- 前年度金額を別途項目として持つ(前年度比較に対応)
以下の2種類の方式でそれぞれ実装します。(ABAP SQL(旧Open SQL)でアクセスできるようにします)
- ABAP CDS View
- HANA Information View(AMDP:Table Functionでラッピング)
データ量(目安)
- ACDOCA:145,000レコード
- SKA1:19,500レコード
検証結果
ABAP CDS View
- 割当メモリ :377.5[MB]
- 実行時間:362.87[ms]
HANA Information View
- 割当メモリ :140[MB]
- 実行時間:212.79[ms]
比較および総括
ABAP CDS Viewを、ロジックをそのままにHANA Information Viewに置き換えました。
ABAP CDS ViewとHANA Information Viewの割当メモリ、実行時間の比較
ABAP CDS View | HANA Information View | 改善率 | |
割当メモリ | 377.5[MB] | 140[MB] | 約1/2.7倍 |
実行時間 | 362.78[ms] | 212.79[ms] | 約1/1.7倍 |
割当メモリ
1/3近くに削減出来ました。実プロジェクトでは、洗練したロジックに置き換えることで、割当メモリの削減すると思います。既に洗練したロジックを採用していて、メモリ不足エラーが発生してしまう場合に有効な選択肢の一つになると思います。
実行時間
1/2近くに削減出来ました。データボリュームが少ないので、大きな差にはなりませんでした。実プロジェクトでは、数千万レコードに対してViewを実行することになります。実際はより大きく削減出来る可能性があります。
関連リンク
お知らせ
実プロジェクトで、ABAP CDS Viewのメモリ不足エラーは、一筋縄に解消出来ないことが多くあります。BeeXでは、SAP HANA黎明期からCode Pushdownを取り入れた実プロジェクトを経験しているスタッフが、直接対応する体制が整っています。メモリ不足や実行時間に関する課題がございましたら、ご連絡ご相談くださいますようお願い致します。
キーワード:
SAP S/4HANA
SAP BW/4HANA
SAP HANA
ABAP CDS View
HANA View
HANA Information View
AMDP
Code Pushdown
Code to Data
メモリ不足
メモリオーバーフロー
- カテゴリー