oracle
自分用メモ
oraclecloud

Oracle Database Classic環境に追加できるストレージの確認

Oracle Database Classic環境に追加できるストレージの確認

Oracle CloudのDB Classic環境にストレージボリュームを追加する方法として以下の二つが存在する。

  • DB Classicのコンソールからの追加
  • Compute Classicのコンソールからの追加

更にOracle Cloudのストレージボリュームは以下の二種類からプロパティを選択することが可能。
だが、DB Classicからストレージボリュームを追加する場合は選択の余地(選択欄)がなくどちらを使用しているか不明。

  • storage/default
  • storage/latency

Compute Classicのマニュアルには、データベース・ファイルの格納など低遅延と高IOPSを必要とする場合は「storage/latency」を選択しろ、との記載があるが前述の通りどちらを使用しているのかハッキリとしない。
そのため簡素だが下記テストを行い、結果を比較してどういった結果になるか確認をしてみた。

ddコマンドによるストレージの処理能力確認

ddコマンドでIOを確認した限りでは、以下の通り処理速度に差が出たことからDB Classicのコンソールからストレージボリュームを追加した場合は「storage/default」で作成されると考えられる。

storage bs=1M count=100 bs=10M count=50
DBaaS 17.2 MB/s 129 MB/s
latency 479 MB/s 936 MB/s

DBの処理テスト

次にストレージの性能の差異がDBの性能にどの影響するかを確認するため、こちらの記事にあるSQLを参考に、下記構成のテーブルにそれぞれ100万行のデータのInsert/Update/Deleteを複数回実施。

テーブルについてはPKやINDEXは付けずに全表走査、全行を対象にして処理を行い、処理時間にどの程度差が出るかを確認。
表領域の作成だけ如実にストレージの処理能力の差が出たが、確認した範囲においてはDBのパフォーマンスにはそこまで影響はない、という結果に。

おそらくINSERTなどの場合はデータを一旦DBバッファキャッシュとかメモリに書き込んで、実ストレージ側には非同期で書き込みにいく動作だったはずなので、その動作(直接ストレージボリューム上のファイルに書き込みにいくか、メモリに書きに行くか)の差が表領域の作成とSELECTやINSERTなどとの処理時間の差の根拠かと思われる。
また、その動作のためINSERTやUPDATEの処理時間はそこまで変わらないのだと想定。

テスト環境構成

  • DB Version:11.2.0.4
  • OS:OEL 6.8

デプロイメントのシェイプ

CPU メモリ
1 OCPU 7.5GB RAM

テストテーブル構成

テーブル名:TEST01/02
      TEST01→DBaaSのコンソールから追加(多分storage/default)
      TEST02→Compute Classicからstorage/latencyで追加

テーブル定義

カラム名 データ型
DATE DATE
NO NUMBER(8)
shop_name VARCHAR2(150)
shop_code VARCHAR2(100)
shop_group_code VARCHAR2(150)

結果

10GB/20GBの表領域を作成した時の処理時間

10GB 20GB
storage/default 107.46s 193.07s
storage/latency 15.61s 31.64s

SELECT

1回目 2回目 3回目 4回目 5回目 平均
TEST01 11.11s 11.00s 11.05s 15.91s 14.92s 12.8s
TEST02 11.19s 11.20s 11.17s 15.67s 15.27s 12.9s

UPDATE

1回目 2回目 3回目 4回目 5回目 6回目 7回目 平均
TEST01 40.08s 33.76s 31.09s 29.84s 31.39s 21.79s 12.70s 28.7s
TEST02 25.09s 24.49s 45.18s 30.38s 29.89s 23.06s 12.22s 27.2s

DELETE

1回目 2回目 3回目 4回目 5回目 平均
TEST01 11.53s 14.13s 14.33s 15.15s 17.02s 14.4s
TEST02 12.36s 12.86s 13.59s 13.65s 13.90s 13.2s

INSERT

1回目 2回目 3回目 4回目 5回目 平均
TEST01 353.33s 356.07s 354.31s 356.27s 353.72s 354.7s
TEST02 354.60s 354.58s 355.98s 351.58s 355.70s 354.5s

一つ気になっているのがコミットやチェックポイントでREDOやデータファイルに書き込みに行く時に処理が遅延する様な感じはないし、iostatやsarで監視していても特にI/Oが上がる様なタイミングが見えなかったこと。
動作としてはDiskへの書き込みが発生するはずなのに、そういった状況が見えなかったのが何となく気持ち悪い・・・自分の認識が間違っているのか確認の仕方の問題なのか、また触る時間のある時に確認したいところ。

 

参考

Oracle Compute Cloud Serviceの使用(for PaaS) - ストレージ・ボリュームの作成
Oracleのテストデータを大量に作成する