Enhanced Partition Pruning Capabilities

目次

Partition Pruning

 

Partition PruningはDWの性能を改善するための非常に基本的な機能です。これはオプティマイザpartition access listを作成するときに、SQLのwhereとfrom句で、不要なパーティションを削除するために使用する方法です。つまりplanを作成するときに、文字通りpartitionの数多くのpartitionの実際使用する必要があるpartitionを残し、不要なものを削除するものです。この機能により、oracleはpartitionの使用時にIOや実行時間を減らし、resourceの活用面でも実行面での性能を良くしてくれます。

 

Enhanced Partition Pruning

 

これまでOracleは、partition pruningにsubquery pruningを使用してきています。これは、それぞれのpartitionをsubqueryにして、不必要なことを、null値として表示するように理解しています。しかし、Oracle 11gでは、このsubquery pruningに代わりbloom filterを使用しています。 subquery pruningを使用すると、cost-based decisionをするようになってinternal(recursive)resourceの消費が避けられないのに対しbloom filtringに基づくpruningは、付加的なリソースの消費が全くなく、活性化が可能です。これpatition access listを作成するときに非常に軽いハッシュ関数とbit演算(bit vector)を持って、その値が特定のパーティションにあるかどうかを計算してp​​runingをするため、大幅なパフォーマンスの改善効果があります。