仮想/物理サーバでの処理時間を比較する仮想サーバ上でのデータベース管理は様々なメリットがあるが仮想サーバを利用することで、「コスト削減が見込める」、「リソース管理が適切に行えるようになる」など、様々なメリットを享受することができます。そのため、データベースの管理も例に漏れず仮想サーバを利用している企業も多いことでしょう。仮想サーバでデータベースを管理すると、パフォーマンス面はどうでしょう。リソース管理を適切に行うことで、物理サーバと遜色ないパフォーマンスを期待できるのか。大量アクセスによりメモリが頻繁に確保/開放されることでパフォーマンスが悪化してしまうのか。DBに限らず仮想サーバでの性能は、一般的には物理サーバ上のリソースとの対応付けが別途発生するなどの理由で、仮想サーバの方が性能劣化するといわれているようです。今回は「仮想サーバと物理サーバではパフォーマンスにどれくらいの違いが出るのか」を検証していきます。図1:検証イメージサーバの仮想化と性能に関して一旦データベースに関わらず、サーバの仮想化と性能の関係について考えておきます。先にも述べましたが、一般的には物理サーバよりも仮想サーバの方が、性能が劣化するといわれています。その理由の一つがI/Oの共有にあると言われています。仮想環境ではCPUやメモリーと共に、I/Oも複数の仮想サーバで共有します。そのため、CPUやメモリーに十分な性能が望めたとしても、I/Oの影響で物理サーバより性能が劣化するケースがあるようです。データベースのI/Oに関してでは、データベースのI/Oはどうでしょうか。今回検証対象としているOracleデータベースは、一般的にI/O負荷が高いソフトウェアと言われています。代表的なものとしては、以下のファイルに様々なI/Oが発生します。LGWRプロセスでログバッファからのシーケンシャル書込が行われます。アーカイブログ・モードの場合、アーカイブREDOログファイルへ出力するため、シーケンシャル読込も行われます。データベースの起動時に読込が行われ、情報の変更が行われた時に書込が行われます。アーカイブログ・モードの時にARCHプロセスでオンラインREDOログファイルからのシーケンシャル書込みを行います。全タイプのI/O(シーケンシャル読込・書込み、ランダム読込・書込)が行われます。読込はサーバープロセスによって行われ、書込はサーバープロセスとDBWRプロセスによって行われます。データファイルのI/Oが多く発生するようです。今回の検証でも、このデータファイルにI/Oが発生するような検証を行っていこうと思います。今回はデータファイルへのI/Oを多く発生させるため、データの作成を大量に発生させて確認を行います。検証方法としては、適当なテーブルに大量データを作成した実行時間を計測します。今回の検証環境は以下の通りです。初期化パラメータ「CPU_COUNT」=2※プロセッサ数を合わせるためデータ生成に関して今回生成するデータの内容は以下の通りです。※データ生成の利用方法は第1回を参照。Ver.13」より、データ生成機能が強化されました。実行速度が向上しており、さらに実行結果見やすくなっております。上記のように実行時間が表示されるようになりました。データ生成機能を性能試験にもご利用いただけるような機能となっております。以下の通りとなりました。平均値での実行時間の対比は以下の通りです。「物理サーバ」に比べ、「仮想サーバ」の方が2倍近く実行時間がかかっています。今回は検証を追加し、仮想サーバの特性を生かして、リソースの配分を変えながら検証します。結果は以下の通りとなりました。平均値での実行時間の対比は以下の通りです。CPUの数を減らすことで、パフォーマンスの劣化も確認できました。平均値での実行時間の対比は以下の通りです。こちらも同様にメモリを増やした方が性能は良くなるようですが、それほどの差は見られないようです。今回の検証結果では、以下のようになりました。・データの挿入処理では、物理環境より仮想環境の方か性能が劣化する・仮想環境のリソース(CPU)の配分はパフォーマンスに影響する・仮想環境のリソース(メモリ)の配分はパフォーマンスへの影響は少ない今回の検証では、データ挿入処理における仮想環境の性能劣化が確認できました。よっては結果が異なるかと思われますが、今回の検証結果では物理サーバと仮想サーバで2倍近くの差が確認できたことから、DBを仮想環境で管理する際にはパフォーマンスの検証は非常に重要であることがわかりました。仮想環境のリソース配分に関しては、CPUの影響を大きく受けるが、メモリの影響はあまり受けないということが確認できました。今回の検証ではその他の仮想環境を平行で動かしていないため、もし多数の仮想環境を動かす場合は、さらに物理サーバとの性能差が顕著に現れてくるものと考えられます。今回の検証結果は以上となります。仮想環境でのDB管理を検討の際は、少しでも参考にしていただければ幸いです。