PREPARATION
受験対策

Silverの例題解説「開発/SQL - SQLコマンド(パーティション)」

今回は、Silverの「開発/SQL - SQLコマンド(パーティション)」からの出題です。

例題

3.105

PostgreSQLのバージョン10からサポートされた宣言的パーティショニングと、従来のバージョンからサポートされている継承を利用したパーティショニングの説明として、適切なものを3つ選びなさい。なお、親テーブルの名前は parent、パーティションの名前は partition1, partition2, partition3… だとします。

  1. どちらの方法でも、親テーブルの作成は通常の CREATE TABLE parent… で行い、パーティションを使うための特別なオプション指定は必要ない。
  2. パーティションを作成するときのコマンドは、宣言的パーティショニングでは
    CREATE TABLE partition1 PARTITION OF parent…
    継承を利用する場合は
    CREATE TABLE partition1 () INHERITS (parent)
    で、どちらもCREATE TABLEを使用する。
  3. どちらの方法でも、INSERT文の実行時にデータの格納先となるパーティションが自動的に作成することはなく、事前にパーティションを作成しておく必要がある。
  4. どちらの方法でも、親テーブルとパーティションを適切なCREATEコマンドで作成しておけば、
    INSERT INTO parent…
    で挿入するデータは自動的に適切なパーティションに格納される。
  5. 宣言的パーティショニングではすべてのパーティションは同じ列を持っていて、異なる列を追加できないが、継承を利用したパーティショニングでは、パーティションごとに異なる列を追加できる。

※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2019年7月31日

解答と解説

パーティショニングは、大きなテーブルを小さな複数のテーブルに分割することで、検索の効率化・高速化を図る手法です。検索対象のデータがテーブルが占めるディスク領域全体に拡がっていると、数多くのページを読み込む必要が生じますが、特定のパーティションに集中している場合は、読み込むページ数が大幅に削減されるなど、性能の向上が期待できます。
PostgreSQLのバージョン10からサポートされた宣言的パーティショニングでは、テーブルとパーティションの作成時に適切な宣言を行うだけで、データを適切なパーティションに格納することができる便利な方法です。親テーブルの作成時には、
CREATE TABLE parent(…) PARTITION BY …
のように、PARTITION BY句を指定し、どの列の値を基準にパーティション分割するのかを指定します。パーティションを作成するには
CREATE TABLE partition1 PARTITION OF parent FOR VALUES…
のように、親テーブルの名前の他に、そのパーティションに入れるべきデータの基準となる値をFOR VALUES句で指定し、これがINSERT文の実行時に格納先となるパーティションの自動的な決定と振り分けに使用されます。各パーティションは親テーブルの作成で指定したのと同じ列を持っており、個別に列を追加することはできません。
PostgreSQLでは以前からテーブルの継承(インヘリタンス)をサポートしており、継承元のテーブルparentに対するSELECT文の実行では、それを継承したテーブルpartition1…からもデータをSELECTするため、これをパーティショニング機能の実現に使うことができます。宣言的パーティショニングとは異なり、親テーブルの作成時には特別の指定はなく、普通のテーブルとして作成します。INSERT
INTO parent の実行でも、特別な仕掛けを作らなければそのまま parentテーブルに挿入されてしまいますので、これを各パーティションに自動的に振り分けたい場合には、例えば、parentテーブルにトリガーを設定し、そこでキー列の値を参照して適当なパーティションへのINSERTに変更するプログラムを作成する必要があります。効果的なパーティショニングとして機能させるため、各パーティションには制約やインデックスを追加するなどする必要がありますが、それでも個々のパーティションは(継承機能を使っていることを除けば)通常のテーブルですので、個別に列を追加することが可能です。
宣言的パーティショニングでも継承によるパーティショニングでも、データの格納先となるパーティションが自動的に作成されることはなく、必要なパーティションは事前に作成しておく必要があります。


従って、正解はB、C、Eです。

今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。

※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。

企業の基幹システムや業務システムでの
OSS-DBの採用がますます拡大している中、
昇格・昇給・就職・転職に必ず役立つ認定資格になります

OSS-DBの受験対策について

受験の学習をサポートする情報や対策に役立つ情報をご紹介

サンプル問題/例題解説

例題 のアーカイブを試験ごとにまとめています。OSS-DB技術者認定試験の学習にお役立てください

学習教材・教育機関のご紹介

OSS-DB認定教材や教育機関について詳しくご説明いたします。

無料技術解説セミナー

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。

OSS-DB道場

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。

LPI-Japan
Platinum Sponsors