SAP HANAテーブルパーティショニング
データベースとしてSAP HANAを使用してシステム運用を行っていると、テーブルに保管できるレコード数の上限に到達してしまい、それ以上に新規レコードを登録できないという問題が発生することがあります。
※SAP HANAでは、1テーブル(パーティション)に格納できるレコード数の上限は約20億レコードとなっています。
SAP HANAでは、この問題の解決方法として、テーブルのパーティショニング機能が用意されています。
今回は実際に実行したパーティショニングのコマンド、その処理時間などを参考情報として、ご紹介したいと思います。
パーティショニングが必要なテーブルの確認
最初に、SAP HANAでパーティショニングが必要なテーブルが存在するかの確認方法をご紹介します。
SAP HANAではテーブルのレコード件数を監視しており、一定件数を超過するとアラートが発生する仕組みとなっています。
このためアラートを確認することで、パーティショニングが必要なテーブルが存在するかを確認することができます。
アラートはHANA Studio等から確認することができます。今回はHANA Stuidioを使用して説明します。
確認対象のデータベースに接続しOverviewタブにて「Show Alerts」をクリックします。
表示された画面にて以下のアラートがないかを確認します。
Record count of column-store table partitions ( ID 27 )
このアラートは、アラート内に表示されているテーブルの1パーティションに格納されているレコード件数が閾値を超えたことを表しています。
アラートの閾値については、デフォルトで以下のようになっております。
Low : 1,500,000,000件(15億件)
Medium : 1,800,000,000件(18億件)
High : 1,900,000,000件(19億件)
このアラートが表示された場合は、テーブルのレコードを削除してレコード件数を減らすか、パーティショニングを実施して1パーティションのレコード件数を減らして、レコード件数が閾値を下回るまで表示され続けます。
SAP HANAのテーブルレコード件数の監視間隔は1時間ごとになります。
なお、必要があればこのアラートをメールで送信するように設定することも可能です。
テーブルパーティショニングの実行
ここからは、テーブルのパーティショニングの方法をご紹介します。
SAP HANAでのパーティショニング方式は、以下の3つの方式が用意されています。
①HASH分割
②ラウンドロビン
③範囲分割
各方式には、それぞれメリット、デメリットおよび、SAPアプリケーションでSAP HANAを使用している場合の推奨があります。
それらは以下のノートに記載されています。パーティショニングを実施する際は、まず以下のノートをご確認いただくことをお勧めします。
2044468 – FAQ: SAP HANA パーティショニング ※確認にはSAP社のSユーザIDが必要となります。
SAP HANAテーブルパーティショニングを実施するコマンドの一例は以下のようになります。実施に当たっては目的に合うようにクエリの内容を見直していただく必要があります。
詳細については公式ガイドを参照してください。
①HASH分割
ALTER TABLE PARTITION BY HASH (<主キー1>,<主キーn>) PARTITIONS <分割数>
②ラウンドロビン
ALTER TABLE PARTITION BY ROUNDROBIN PARTITIONS <分割数>
③範囲分割
CREATE COLUMN TABLE …PARTITION BY RANGE (<主キー>)
( PARTITION 1 <= VALUES < 100,
PARTITION 100 <= VALUES < 200
PARTITION VALUE = 400
PARTITION OTHERS )
テーブルパーティショニングの処理時間
ここからは、テーブルパーティショニングに掛かる処理時間について、ご紹介します。 なお、ここで説明する処理時間は、レイエントシステム内で運用しているSAP S/4HANAのSAP HANAデータベースに対する処理時間となります。
※SAP HANAのマシンスペックにより処理時間は変化するため参考値となります。
今回はパーティショニングのパフォーマンスを向上させるために、以下のSAP HANAパラメータを設定して、実行しています。
bulk_load_threads=8 ※デフォルト値4
split_threads=50 ※デフォルト値16
パターン①
SAP HANAサーバスペック: CPU128コア、メモリ4TB
パーティショニング方式 : HASH分割
処理時間
レコード数約9億件の場合 : 約30分
レコード数約14億件の場合: 約47分
レコード数約16億件の場合: 約52分
パターン②
SAP HANAサーバスペック: CPU448コア、メモリ6TB ※SAP HANA System Replicationあり
パーティショニング方式 : HASH分割
処理時間
レコード数約20億件の場合: 約120分
パターン①、②の処理時間結果の通り、レコード件数に比例して処理時間は増加していきます。
また、SAP HANA System Replicationが構成されていると、マシンスペックが良い環境でも処理時間が大幅に増加します。