Databaseでも使える3つのI/O時間短縮機能とはI/Oボトルネック解消に必要な2つのアプローチ連載第2回では、大規模データ処理におけるディスクI/Oのボトルネックが発生する原因や、かんたんな分析手法について紹介しました。I/Oボトルネックを改善するには、どのようにすればいいのでしょうか。大きく分けると、以下の2つのアプローチがあります。1I/Oを高速化するストレージ数やストレージあたりのディスク数の増設、ディスクやコントローラの高速化、DB-ストレージ間のネットワークの帯域拡張など、おもにハードウェアの増強や性能アップでボトルネックを改善します。Databaseの機能などによってボトルネックを改善します。第2回で紹介したI/Oボトルネックの発生パターンは、すべて上記のアプローチを適切に取ることで解消します。ExadataはどのようにしてI/Oを高速化しているのか前回紹介したとおり、データベースのI/O時間は、下記のように表されます。「ストレージがデータを取得する時間」は、多くの高速なディスクに対して同時にI/Oを発行することで短くなります。「ストレージからデータベースへのデータ転送時間」は、ディスクI/Oと同等以上にネットワーク帯域を拡張することで短くなります。大規模データ処理を行うデータベースにおいては、I/O時間の短縮が肝になります。そのため、ハードウェアレベルの増強は必須と言えます。X3-2(以降、Exadata)では、I/O性能を向上させるために、以下のようにしてハードウェアの最適化が図られています。Rackモデルの場合は14台)含まれています。Management)により、すべてのDiskにまたがってI/Oを発行します。これにより、全ディスクのI/O性能を最大限活用し、GB/sから数10GB/sレベルの広I/O帯域を実現しています。このようにデータを分散配置することにより、特定のディスクに対するアクセスの競合も発生しづらくなっています。「ストレージからデータベースへのデータ転送時間」の短縮ExadataのDBサーバとストレージサーバは、4GB/sの実効帯域を持つInfiniBandネットワークで接続されています。そのため、GB/sクラスのI/O帯域をそのままデータベースに提供することができます。Index」I/Oの削減は、必要なデータのみをストレージに読み込ませ、DBサーバに返すことで実現します。「必要なデータのみをDBサーバに返す」というと、当たり前のことのように思えるかもしれません。Databaseはすべての表データを取得するようストレージに要求してしまいます。データのフィルタリングは、DBサーバ側で実施しなければなりません。数件のデータのみを取得するSQLでは、索引によって必要なデータのみをピンポイントで取得すればI/O量を削減できます。フルスキャンがおもになる大規模データ処理の場合は、いかにスキャン対象データを絞りこめるかが重要になるのです。Databaseには「パーティション」という機能があります。これは、表を複数の論理的なセグメント(パーティション)に分割し、SQLの絞り込み条件を満たすパーティションのみをストレージに要求することでI/O量を削減できるという機能です。Exadataには、このパーティション機能に加え、I/Oを劇的に減らす以下の2つの機能があります。Scan)は、SQLの絞り込み条件や列リストをストレージサーバが認識し、必要なデータのみをDBサーバに返す機能です。これにより、DBサーバ―ストレージ間のデータ転送時間と、DBサーバでのフィルタリング時間を短縮することができます。Index)は、ストレージサーバ上で透過的に作成される索引により、SQLの絞り込み条件を満たすデータのみをストレージがスキャンするようにする機能です。Indexが使用されると、読み込み範囲が限定されるため、ストレージ側でI/Oを大幅に削減する効果があります。パーティションと異なり、この2機能についてはストレージ側で透過的に実施されるため、追加設計が不要であることも大きなメリットです。Softwareによって実現されています。Exadataの公開事例(PDF)では、「⁠100倍高速化」などの圧倒的な速度が実現されたケースが紹介されています。そのような成果を実現できたのは、このようにハードウェア/ソフトウェアの両面から、大規模データ処理において最大のボトルネックとなるI/Oを高速化しているためです。Databaseでも使える3つのI/O時間短縮機能とはちなみに、ASMやパーティションと同様に、Exadataでなくとも使用できるI/O時間短縮機能があります。おもなものは下記のとおりです。⇒単一のSQLを複数プロセスで分割処理し、単位時間あたりのI/O発行量を増やすここまで紹介してきたとおり、大規模データ処理を行うデータベースでは、ハードウェアとソフトウェア双方の観点から、I/Oボトルネックが発生しづらい構成をあらかじめ設計段階で考慮しておくことが重要になります。次回からは、大規模データ処理におけるCPUボトルネックの発生要因と、その改善策について紹介していきます。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。