スマートスタイル TECH BLOG

データベース&クラウド技術情報

Autonomous Database を ECPU モデルに変更してみた

はじめに

Autonomous Database ServerlessでECPU課金モデルが利用できるようになりました
本記事では、既存のOCPU課金モデルのAutonomous DatabaseをECPU課金モデルへ変更する手順と、変更する際にクライアント接続が保たれているのか、処理性能等をレポートしたいと思います

ECPU課金モデルとは

  • Autonomous Database (以下 ADB) の新しい課金メトリックであり、Autonomous Data Warehouse (以下 ADW)、Autonomous Transaction Processing (以下 ATP) のみで利用可能
  • ECPU がデフォルトの価格メトリックとなり、推奨されています
    • OCPUからECPUは変更可能ですが、逆(ECPUからOCPUへの変更)は不可です
  • OCPU と ECPU の違いによる性能差はなく、現時点では 1OCPU ≒ 4ECPU と考えて問題ありません
  • ECPU 利用の最小単位は 2 であり、スケールアップ・ダウンは 1 ECPU 単位で行うことが可能
  • ストレージ費用がADW、ATPで異なります
    • ADW: ¥3.416[GB/月](¥3,497.984[TB/月])、 ATP: ¥16,576[TB/月]
  • 自動バックアップのストレージ費用が必要となり、1~60日の間で保持期間を設定可能となります

などがございますが、Oracle Autonomous Database ECPUに関するよくある質問(PDF) もご参照いただければと思います

OCPUからECPUへの変更


ADBの詳細画面から、 ECPUモデルに更新 を選択し、請求モデルの更新画面で 変更の保存 をクリックするだけで、ECPU課金モデルへ変更できます

ECPU課金モデルへ変更する際にどのような動作となるのかを確認してみたいと思います

  1. 変更中、変更後にデータベースが再起動するのか
  2. 既存のクライアント接続は維持されるのか
  3. トランザクションは維持されるのか
  4. 変更中に新規接続は行えるのか
  5. 変更中の処理性能はどうなるのか

※5の確認のみ他の確認の影響をなるべく排除したいため、別インスタンスを用意して実施しております
※確認を行うインスタンスは両方とも、1OCPU・1TBストレージのATPインスタンスを使用しております

1~4の確認用インスタンスをECPUモデルに変更


作業リクエストより、開始時刻が 11:00:25 であり、終了時刻は 11:01:12 であることがわかり、変更処理は約 50 秒程度で完了しているようです

1. 変更中、変更後にデータベースが再起動するのか

インスタンス起動時間の確認

v$containersよりATPの起動時間を確認しています(OPEN_TIMEはUTCで出力されているため、実際は 09:58:37 となります)

ECPU モデルに変更を実施

変更処理を実施します

インスタンス起動時間の再確認

ECPU モデルに変更しても OPEN_TIMEに変化はありませんので、再起動は行われていないと思われます

2. 既存のクライアント接続は維持されるのか

SQL*Plusでインスタンスに接続します

ECPU モデルに変更を実施

変更処理を実施します

SQL*PlusでSQLを実行してみます

ORAエラーもなくSQLが実行できましたので、既存クライアントが切断されるということも無いようです

3. トランザクションは維持されるのか

SQL*Plusでインスタンスに接続し、トランザクションを開始します

ダミーデータを用意して明示的にトランザクションを開始、id=1 の値を更新した状態で待機します

ECPU モデルに変更を実施

変更処理を実施します

ロールバックして確認します

ロールバックも問題なくできますので、トランザクションも維持されたままであることが確認できます

4. 変更中に新規接続は行えるのか

データベースに毎秒間隔で接続を行います

毎秒間隔で現在時刻を問い合わせするように実行します

ECPU モデルに変更を実施

変更処理を実施します

ECPU モデル変更中の接続を確認します

一部抜粋ではありますが、問題なく接続できていることが確認できます

5の確認用インスタンスをECPUモデルに変更


作業リクエストより、開始時刻が 11:15:05 で終了時刻は 11:15:39 であることがわかり、変更処理は約 35 秒程度で完了しているようです

5. 変更中の処理性能はどうなるのか

データベースに負荷をかけてみます

本検証では、jdbcRunnerを用いて Tiny TPC-Cを実行してみます
※ATPの処理性能を検証することが目的ではないため、各種パラメータは jdbcrunner-1.3.1.zip に同梱されている tpcc.js をそのまま使用し、測定時間のみ5分に変更して実行しています

ECPU モデルに変更を実施

Warmupが完了しProgressになったら、変更処理を実施します

結果確認


tx1はほぼ250tpsから270tpsほどを記録しており、変更処理中でも11:15:30から5秒間ほど性能が落ち込んだ以外は問題ないことが確認できます
tx0,tx2,tx3,tx4に関しては、tx0が何故か途中で増加しておりますが、基本的には横ばいで推移していることからも、性能劣化などは見受けられなかと思われます

まとめ

上記の結果よりOCPUからECPUへ変換する際には、既存の接続に関しては気にする必要がないことがわかります
性能に関しては、ワークロードによっては性能の問題が出てしまう可能性はございますが、本検証結果を見る限りではそれほど気にする必要はないことがわかります
※ただし、すべての環境で同一の結果が得られるわけではございませんので、なるべくメンテナンス時間を設けていただくことが望ましいです

追加確認

4OCPUのATPを16ECPUに変更してみましたが、変更処理は約 29 秒で完了いたしました
全く負荷をかけていない作成直後のインスタンスであるため、あくまで参考となりますが、OCPU数は変更処理時間にそれほどの影響は与えないものと思われます

Return Top