TOP>製品/サービス>カテゴリから探す>データベース>EDB Postgres(PostgreSQL)>パーティション強化

EDB Postgres(PostgreSQL)

パーティション強化

パーティション機能が充実したEDB Postgres。大規模データにも対応

パーティションは、大規模な表をパーティションというより小さくて管理しやすい固まりに分割して格納する機能です。各パーティションを異なるディスク領域へ配置することで検索処理を高速化したり、管理の効率化を図ることができます。



データを分割


EDB Postgresでは、PostgreSQLでサポートされている「レンジ」、 「リスト」に加えてOracle Databaseと同様に「ハッシュ」の計3種の主要パーティションがサポートされています。また、レンジとリスト、レンジとハッシュなど複数を組み合わせたコンポジットパーティションもサポートしており、用途に応じて大規模データを分割・管理することができます。

パーティション機能のメリットとして検索処理の性能向上があります。一般的に「パーティション・プルニング」と呼ばれ、WHERE句にパーティションキーを指定した場合、アクセス対象のパーティションが絞り込まれることによってディスクI/Oを抑制する仕組みです。PostgreSQLのドキュメントでは「制約による除外」と表現され、CHECK制約を利用して子テーブルを絞り込みます。そのため、子テーブルの数が多くなるに従い、CHECK制約による絞り込みのオーバヘッドが発生する可能性があり、子テーブルの上限数は一般的に100個程度と言われています。

EDB Postgresではこの点に改善が加えられています。EDB Postgres 9.3と9.2の環境下で、250、500、1000の子テーブルに分かれるテーブルに対して複数セッションから検索処理を行った場合の1秒間あたりのトランザクション数はPostgreSQL 9.3で最大76倍の性能向上を確認しています。

また、EDB Postgres 9.3と9.2の環境下で、100、250、500、1000の子テーブルに分かれるテーブルに100万行のデータをINSERTした場合、9.3の性能が450倍以上向上することを確認しており、大規模データ環境へ柔軟に対応します。

パーティション

パーティション


EDB Postgresでは、PostgreSQLと同様に「継承」「制約」「トリガ」の3つの機能を組み合わせてパーティショニング機能を実現していますが、PostgreSQLに比べて設定手順が簡略化されています。

PostgreSQLでは親テーブルを作成後にパーティションの位置づけとなる子テーブルを作成します。そして親テーブルにデータ挿入のためのINSERTトリガを作成し、加えて、子テーブル間の移動を伴う更新のためのUPDATEトリガを子テーブルごとにそれぞれ作成する必要があります。一方、EDB Postgresでは親テーブル作成のコマンド1つで必要なすべての作業が内部で行われるため、設定時の負荷が軽減されます。

パーティショニング手順

CREATE TABLE sales_tab
( salesman_id NUMBER(5),
salesman_name VARCHAR2(30),
sales_amount NUMBER(10),
sales_date DATE)
PARTITION BY RANGE(sales_date)
(
PARTITION sales_Q1_2013 VALUES LESS THAN (to_date('2013/04/01','YYYY/MM/DD')),
PARTITION sales_Q2_2013 VALUES LESS THAN (to_date('2013/07/01','YYYY/MM/DD')),
PARTITION sales_Q3_2013 VALUES LESS THAN (to_date('2013/10/01','YYYY/MM/DD')),
PARTITION sales_Q4_2013 VALUES LESS THAN (to_date('2014/01/01','YYYY/MM/DD'))
);


お求めの情報は見つかりましたでしょうか。

資料請求/お問い合わせはこちら(専門の担当者が確認し、ご対応します。)

お客様の状況に合わせて詳しい情報をお届けできます。お気軽にご相談ください。

ページの先頭へ戻る