SAP HANA Administration

SAP HANAのメモリ使用量を確認する方法:不足時の切り分けと対処

SAP HANAオンプレミスでホスト、サービス、カラムストアのメモリ使用量を確認する方法を、SAP HANA cockpit、データベース・エクスプローラ、SQL、アラートの見方とともに解説します。

SAP HANAメモリ使用量の切り分けフローホスト、サービス、テーブルの順に確認する流れを示すSAP HANAメモリ使用量の切り分けフローホスト、サービス、テーブルの順に確認する流れを示す全体状態から開始原因を絞り込むデータ要因を特定比較して対応SAP HANA cockpit推移とアラートを確認するホストメモリSYS.M_HOST_RESOURCE_…サービスメモSYS.M_SERVICE_MEMORY…カラムストアテーブルSYS.M_CS_TABLESとMEMO…運用対応推移、ジョブ、データ増加を…CertPas オリジナル図解
SAP HANA cockpitからホスト、サービス、カラムストアテーブルのメモリを確認し、運用対応へ進む切り分けフロー
目次
  1. SAP HANAのメモリ使用量を確認する全体像
  2. ホスト全体のメモリを確認する
  3. サービス単位でメモリ使用量を調べる
  4. カラムストアテーブルのメモリ使用量を確認する
  5. SAP HANA cockpitとSQLの使い分け
  6. メモリ不足が疑われるときの切り分け
  7. 監視結果を運用手順に組み込む
  8. 確認手順の要点

SAP HANAのメモリ使用量を確認する全体像

SAP HANAオンプレミスのメモリ使用量は、ホスト、サービス、テーブルの3階層で確認すると原因を整理しやすくなります。最初にホスト全体の物理メモリと割り当て上限を確認し、次に各サービスの使用量、最後にカラムストアテーブルの占有量を調べます。単一の数値だけで判断せず、使用量の推移、割り当て上限、アラート、処理時間を組み合わせて見ます。

日常監視にはSAP HANA cockpitを使い、詳細なSQL確認にはSAP HANA database explorerを使います。SAP HANA cockpitではシステムの概要、リソース使用率、アラートを一つの画面で追跡できます。SQLの結果を保存したり、対象を絞り込んだりする場合は、データベース・エクスプローラからシステムデータベースまたは対象テナントデータベースへ接続します。

調査階層別に見るメモリ確認先各階層で使うビューと主要列を比較する調査階層別に見るメモリ確認先各階層で使うビューと主要列を比較する対象を絞るテーブル単位の要因を探すホスト:M_HOST_RESOU…物理メモリ、割り当て上限…サービス:M_SERVICE_…サービス別のTOTAL_MEM…テーブル:M_CS_TABLESMEMORY_SIZE_IN_TOTA…CertPas オリジナル図解
ホスト、サービス、カラムストアテーブルの階層別にSAP HANAのメモリ確認ビューを比較した図

ホスト全体のメモリを確認する

ホストの物理メモリ状況は、SYS.M_HOST_RESOURCE_UTILIZATIONで確認します。主要な列はHOST、USED_PHYSICAL_MEMORY、FREE_PHYSICAL_MEMORY、ALLOCATION_LIMIT、INSTANCE_TOTAL_MEMORY_USED_SIZE、INSTANCE_TOTAL_MEMORY_ALLOCATED_SIZEです。たとえば、次のSQLでホストごとの状態を取得できます。

SELECT
  HOST,
  USED_PHYSICAL_MEMORY,
  FREE_PHYSICAL_MEMORY,
  ALLOCATION_LIMIT,
  INSTANCE_TOTAL_MEMORY_USED_SIZE,
  INSTANCE_TOTAL_MEMORY_ALLOCATED_SIZE
FROM SYS.M_HOST_RESOURCE_UTILIZATION;

USED_PHYSICAL_MEMORYはホストで使用されている物理メモリ、FREE_PHYSICAL_MEMORYは空き物理メモリを示します。ALLOCATION_LIMITはSAP HANAが使用できるメモリの上限を判断するための値です。INSTANCE_TOTAL_MEMORY_USED_SIZEとINSTANCE_TOTAL_MEMORY_ALLOCATED_SIZEを比較すると、SAP HANAインスタンスが実際に使用している量と確保している量を区別できます。

分散システムでは、ホストごとの結果を個別に確認します。1台だけUSED_PHYSICAL_MEMORYが高い場合は、特定ホスト上のサービス配置、OSプロセス、バックアップやロード処理などを調べます。全ホストで使用量が上昇している場合は、データ量の増加、同時実行処理、メモリを消費する管理操作を時系列で確認します。

メモリ使用量上昇時の運用プロセス測定値をジョブ、データ増加、対応へ結び付けるメモリ使用量上昇時の運用プロセス測定値をジョブ、データ増加、対応へ結び付ける根拠を集める対象を定めて対応結果を確認監視を継続測定同じ時刻にホスト、サービ…照合アラート、ジョブ、ロード…対応運用、データ管理、容量対…検証変更後のメモリ推移と処理…CertPas オリジナル図解
SAP HANAのメモリ使用量上昇に対して、測定、照合、対応、検証を行う運用プロセス

サービス単位でメモリ使用量を調べる

ホスト全体の数値からサービスを特定するには、SYS.M_SERVICE_MEMORYを確認します。サービスの使用量はTOTAL_MEMORY_USED_SIZEで確認できます。次のSQLでは、サービス名、ホスト、使用量を一覧できます。

SELECT
  HOST,
  SERVICE_NAME,
  TOTAL_MEMORY_USED_SIZE
FROM SYS.M_SERVICE_MEMORY;

サービス単位の結果では、nameserver、indexserverなど、どのサービスがメモリを多く使用しているかを確認します。indexserverの使用量が高い場合は、テーブルデータ、SQL実行、デルタストレージ、同時実行ワークロードを調べます。nameserverなど別のサービスが増加している場合は、該当サービスの処理状況とSAP HANA cockpitのアラートを合わせて確認します。

サービスの使用量が一時的に増える処理には、大量データのロード、バックアップ、テーブル再編成、集計処理などがあります。瞬間値だけで再起動やデータ削除を決めず、時間帯、処理ジョブ、SQL実行履歴と照合します。継続的な増加であれば、メモリ使用量の推移とデータ量の変化を記録し、計画的な対策につなげます。

アラートの優先度や発生時刻を読むときは、SAP HANA cockpitのアラート確認も参照してください。メモリの警告だけでなく、ディスク、バックアップ、サービス状態に関する同時発生アラートを確認できます。

カラムストアテーブルのメモリ使用量を確認する

テーブルごとのメモリ使用量は、SYS.M_CS_TABLESで確認します。主な列はMEMORY_SIZE_IN_TOTALとRECORD_COUNTです。次のSQLで、メモリ使用量の大きいカラムストアテーブルを確認できます。

SELECT
  SCHEMA_NAME,
  TABLE_NAME,
  MEMORY_SIZE_IN_TOTAL,
  RECORD_COUNT
FROM SYS.M_CS_TABLES
ORDER BY MEMORY_SIZE_IN_TOTAL DESC;

MEMORY_SIZE_IN_TOTALはテーブルが使用するメモリの合計、RECORD_COUNTはレコード数です。レコード数が増えているテーブルでは、データ保持期間、アーカイブ、パーティション、アプリケーションの登録量を確認します。レコード数の増加が小さいのにメモリが増えている場合は、列の構成、圧縮状態、ロードやマージの状況を調べます。

カラムストアでは、メインストレージとデルタストレージの状態がメモリ使用量に影響します。大量ロード後や更新処理の集中後は、デルタマージの実行状況を確認します。デルタマージの目的、確認項目、実行時の考え方はSAP HANAのデルタマージで整理しています。

SAP HANA cockpitとSQLの使い分け

SAP HANA cockpitは、運用担当者が現在の状態を素早く把握するための管理ツールです。システム概要ではメモリ、CPU、ディスク、サービス状態を確認でき、アラート画面ではしきい値を超えた項目と発生時刻を追跡できます。グラフの期間を広げると、短時間のピークと長期的な増加を分けて判断できます。

SAP HANA database explorerは、ビューの列を指定したSQL確認、結果の並べ替え、対象テナントの詳細調査に適しています。ホスト全体を確認するときはSYS.M_HOST_RESOURCE_UTILIZATION、サービスを確認するときはSYS.M_SERVICE_MEMORY、カラムストアテーブルを確認するときはSYS.M_CS_TABLESを使い分けます。

監視画面の数値とSQL結果を比較するときは、確認時刻と接続先データベースを記録します。SAP HANA 2.0のマルチテナントシステムでは、システムデータベースとテナントデータベースが存在します。テナントのワークロードを調査する場合は、対象テナントへ接続して結果を確認し、システム全体の状態はSAP HANA cockpitで把握します。

メモリ不足が疑われるときの切り分け

メモリ不足の兆候には、メモリ使用率の継続的な上昇、SQLやロード処理の失敗、サービスの応答遅延、SAP HANA cockpitのメモリアラートがあります。まずSYS.M_HOST_RESOURCE_UTILIZATIONでホストのUSED_PHYSICAL_MEMORY、FREE_PHYSICAL_MEMORY、ALLOCATION_LIMITを確認し、次にSYS.M_SERVICE_MEMORYでサービス別のTOTAL_MEMORY_USED_SIZEを比較します。

次に、増加したサービスに関係するテーブルをSYS.M_CS_TABLESで調べます。MEMORY_SIZE_IN_TOTALが大きいテーブルとRECORD_COUNTの増加を確認し、データロード、更新、集計、デルタマージの実行履歴と照合します。特定テーブルに集中していればデータ管理や処理設計を検討し、複数サービスで増加していれば同時実行数やジョブスケジュールを確認します。

短時間のピークには、処理の実行時間帯を調整する、バッチを分割する、不要な並列処理を抑えるといった運用対策が有効です。継続的な増加には、データ保持方針、アーカイブ、テーブル設計、パーティション、ハードウェア容量を順番に検討します。SAP Quick Sizerは、業務量やデータ量を基に初期のサイジングを検討する際に利用します。

監視結果を運用手順に組み込む

定期監視では、ホストのメモリ使用量、サービス別使用量、上位テーブル、アラート件数を同じ時刻に記録します。日次または週次で推移を比較すると、月末処理やデータロード日に発生する周期的なピークを把握できます。記録には接続先、対象ホスト、対象サービス、実行中の主要ジョブを含めます。

メモリ使用量の確認は、バックアップや障害対応とも関係します。容量逼迫が見込まれる場合は、バックアップの成功状況、保存先の空き容量、リカバリに必要な情報を確認します。バックアップ設計と復旧確認についてはSAP HANAバックアップとリカバリを参照してください。

運用変更後は、変更前後のメモリ使用量、サービス状態、SQL処理時間を比較します。設定変更やデータ整理の効果を数値で確認し、アラートが解消したことだけでなく、業務処理が安定したことまで確認することが重要です。

確認手順の要点

SAP HANAのメモリ使用量は、ホスト、サービス、テーブルの順に調べると切り分けやすくなります。SAP HANA cockpitで全体の状態とアラートを確認し、SAP HANA database explorerでSYS.M_HOST_RESOURCE_UTILIZATION、SYS.M_SERVICE_MEMORY、SYS.M_CS_TABLESを照会します。メモリ不足への対応は、数値のピークだけでなく、増加傾向、処理内容、データ量、サービス配置を組み合わせて決定します。

システム全体の起動停止や運用手順を整理する場合は、SAP HANAの起動と停止も確認してください。メモリ調査では、対象テナント、実行時刻、調査対象サービスを明確にしてから操作を進めることで、原因と対策の対応関係を保てます。

ブログ一覧へ戻る