Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。4並列実行の適用まとめ並列実行プロセス間のデータ交換能力ジョインする表が2つの場合、結合列をパーティション・キーにして同じパーティショニング方式にすればフル・パーティション・ワイズ・ジョインになります。現実の処理はジョインする表が3つ以上であり、結合列が異なることがほとんどです。すると、すべての表のジョインをフル・パーティション・ワイズ・ジョインにできるとは限らなくなってしまいます。3表以上の結合(ジョイン)の並列化フル・パーティション・ワイズ・ジョインできないパターンのジョインも並列化できることが望ましいのですが、これに必要なのが、並列実行プロセス同士がデータ交換をする能力です。ジョインする片方の表がパーティション・キーを結合キーにしてしない場合、並列実行プロセスがジョインの途中でデータ交換できないと、1つの並列実行プロセスは特定のパーティションだけでなく全パーティションを走査しなければならなくなります。これを避けるためには、並列実行プロセスがデータ交換能力を持っている必要があります。Databaseでは並列実行プロセスのセットを2つ構成することで並列実行プロセス間のデータ交換能力を実装しています。そのため、並列実行プロセスの個数は最大で水平方向の並列度の2倍になります。並列実行プロセスのセットの間には共有メモリ領域を使用したデータ交換用の小さなバッファ領域を設け、テーブル・キューと呼びます。テーブル・キューを介して並列実行プロセスのセット間でデータ交換が可能になっています。並列実行プロセスのセットは垂直方向のパイプラインを形成し、複雑なSQL実行計画では2つある並列実行プロセスのセットが交互にデータの送信側と受信側の役割を入れ替えていきます。Databaseの並列実行プロセスパーティション方式が異なる表をジョインする場合、並列実行プロセスのセットの片方が表データを分割してスキャンし、それをもう片方の表のパーティション・キーに合わせてテーブル・キューを介して再配分します。MapReduceでいうところのシャッフル操作です。すると、テーブル・キューを介して渡されたデータとのジョインはフル・パーティション・ワイズ・ジョインの形になるので並列実行プロセスのセットはデータ交換なしでジョインできます。結合(ジョイン)の並列化:パーシャル・パーティション・ワイズ・ジョインこの方法だと、パーティション方式の異なる表のジョインだけでなく、パーティショニングしていない表のジョインの並列化も可能です。Databaseでは非パーティション表やパーティション表の1つのパーティションの領域管理単位をセグメントと呼びますが、1つのセグメント内も並列化することが可能です。これは動的なパーティショニングと見ることもできます。1つのセグメントの並列化まず、フル・スキャン対象範囲のデータ・ブロック個数を並列度で分割します。それをさらに大・中・小の3つの範囲(チャンク)に分解します。複数ある並列実行プロセスには大きなチャンクから処理を割り当てていき、処理が終わったプロセスには次に中のチャンクを割り当て、最後に小のチャンクを割り当てます。複数ある並列実行プロセス間でそれぞれのチャンクを処理する時間に差ができたとしても、先に処理が終了したプロセスが次のチャンクを処理するので、最終的な処理時間の差が小さくなるように工夫されています。Databaseを担当するエンジニア。Clustersを中心とする高可用性構成や性能チューニングの問題解決およびコンサルティングに従事。著書に「これは使えるOracle新機能活用術」(翔泳社)。モブプログラミングを取り入れて開発を効率化させるヒント9企業の7割超が「2025年の崖」を理解していないことが明らかに。モブプログラミングを取り入れて開発を効率化させるヒント9企業の7割超が「2025年の崖」を理解していないことが明らかに。モブプログラミングを取り入れて開発を効率化させるヒント9企業の7割超が「2025年の崖」を理解していないことが明らかに。5.0」がリリース新着記事一覧を見るイベント今後の予定を見るCodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。