Special
» 2016年06月01日 07時00分 公開

フラッシュ・ストレージを導入すればCPUコア数は本当に減らせるの?──データベース性能は“わんこそば”で考えよう!データベース基盤と管理の「それって本当?」――スペシャリストが真実を暴く(3/3 ページ)

[PR/@IT]
PR
前のページへ 1|2|3       

CPU、増やせるものなら増やしたい。けど……

 「ストレージが速くなったら、CPUコア数を増やす必要がある」理由をここまで説明してきました。しかし、計算上は正しくても、なかなか現実は簡単ではありません。一般的なデータベース・システムでは、冗長性を考慮してディスク・アレイをSANやNASなどでネットワーク接続することが一般的でしょう。250MB/秒で読み取れるSSDを240本積んだ60GB/秒出る超高速ディスク・アレイを用意して、ボトルネックにならないくらいのCPUを大量に用意したとしても、16Gbps(2GB/秒)のFiberChannel 8本ではネットワークが16GB/秒しか出ずにボトルネックになってしまいますし、大量にCPUがあると、ソフトウェア・ライセンス費用も多額になるかもしれません。

 わんこそばで言えば、ミサエさんが1杯を0.1秒で準備できるようになって、1分間に600杯(=60秒÷0.1秒)準備できるようになったとき、1杯を6秒で食べられるタケシくんの友人を60人(=600杯÷(60秒÷6秒))招けば、理論的には1分間に600杯食べられるようになります。しかし、宴会場を用意しなければならないかもしれませんし、厨房設備も大きくする必要があるかもしれません。敷地確保のために移転しないといけないかもしれません。計算上は可能でも、現実的でないことが予想されます。

 しかし、1分間に食べられる“杯数”を増やすには、もう1つの方法があります。1杯の量を減らすのです。ミサエさんが1杯を0.1秒で準備できるようになったとしても、1杯を0.6秒で食べられる程度に量に減らせば、友人6人(=600杯÷(60秒÷0.6秒))で十分釣り合いが取れます。これならばお店を移転しなくても良さそうです。

 これを現実のデータベース・システムで実現しているのが、「Oracle Exadata」です。Oracle Exadataはストレージ側にもデータベース・ソフトウェアを内蔵しているため、SQLのWHERE句の条件に従って、“ストレージ側で”データをフィルターや結合することができます。つまり、ネットワーク転送する前に大幅にデータ量を減らすことができるわけです(図7)。そのため、ネットワークに大量のデータが流れることもなく、データベース・サーバー側では既にフィルター済みのものだけを処理すれば良いので、データベース・サーバーに大量のCPUは不要になります。この機能はExadata SmartScanと呼ばれ、あるアプリケーション処理ではデータ転送量を100分の1に減らせました。つまり、SmartScanがない環境に比べて、ネットワーク帯域は100分の1、CPUコア数も100分の1で済んだということです。わんこそばの1杯の量を減らすことは誰でもできるかもしれませんが、Oracle Databaseをストレージに内蔵している製品はOracle Exadataしか存在しません。

photo 図7 Exadata SmartScanではストレージ側であらかじめデータをフィルターすることで処理量を減らし、処理速度を上げられる

今回の学び

  1. ストレージが速くなった場合、CPU がボトルネックにならないようにCPUコア数を増やさなければならない
  2. 費用面などの現実的な問題で、CPU コア数は気軽には増やせない
  3. Oracle Exadata はストレージ側でフィルターや結合できるためデータベース・サーバー側のCPU コア数を抑える真のソリューションである
前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.


提供:日本オラクル株式会社
アイティメディア営業企画/制作:@IT 編集部/掲載内容有効期限:2016年6月30日

関連情報

驚異的なパフォーマンス、優れた運用効率、最高の可用性とセキュリティ、クラウド対応を実現するOracle Exadataとの統合、クラウド、可用性や運用管理など、次世代データベース基盤構築のために参考になる必見資料をまとめてご紹介いたします。

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。