PREPARATION
受験対策

Silverの例題解説
「S3.1 SQL コマンド(パーティション)」

「S3 開発/SQL - S3.1 SQL コマンドド(テーブルスペース)」からの出題です。

例題

3.140

テーブルをパーティションに分割することで得られることがある利点として、適切なものを3つ選びなさい。


  1. テーブルが必要とするディスク容量を小さくすることで、アクセス性能を向上させる。
  2. インデックスを小さくすることで、アクセス性能を向上させる。
  3. インデックス走査(index scan)の代わりに、パーティション内の全件走査(full scan)をすることで、アクセス性能を向上させる。
  4. 古いデータの一括削除、といった操作の処理時間を短縮する。
  5. UPDATEによってデータがパーティション間を移動するときの処理が高速化される。

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

解答と解説

パーティショニングは大きなテーブルを小さなテーブル(パーティション)に分割する手法です。例えば売上データを売上の日付によって月ごとのパーティションに分割する、といったことをします。月ごとだと、例えば3年分のデータは36個のパーティションに分割されて格納されます。

パーティショニングによって性能が向上するのは、その特定のパーティションにのみアクセスする場合です。大きなテーブルの一部だけに集中的にアクセスするような形式にでき、さらにその領域がデータベースサーバのメモリ内に収まるような状況なら、劇的に性能が向上する可能性があります。

小さなテーブルに分割されるとは言え、入っているデータの総量は変わりませんから、テーブルが必要とするディスク容量は変わりません。
インデックスはパーティションごとに作成されるため、インデックスの個数は増えますが、個々のインデックスファイルのサイズは小さくなります。また問い合わせの条件によっては特定のインデックスにのみアクセスすれば良いので、インデックスがメモリ内に収まり、性能が大きく向上する可能性があります。

例えば2ヶ月前の売上データを検索して集計する、という場合、パーティション分割されていなければ、インデックスを使ってテーブル全体に分散しているデータを検索することになるでしょう。月ごとのデータにパーティショニングされている場合、該当のデータは特定のパーティションにだけあることがわかっていますから、特に検索されるデータ件数が多い場合、インデックスを使わずに、そのパーティションのデータを全件走査する方が速い、ということがあります。

1ヶ月分のデータをすべて削除する、という場合、テーブル全体に分散している個々のデータを削除する代わりに、パーティション1個を丸ごとDROPすれば済むので、この操作は大幅に高速化されます。

パーティション分割に使っているキー列(例えば売上日付)をUPDATEで更新すると、そのデータが別のパーティションに移動することがあります。内部的には移動元のパーティションへのDELETEと移動先のパーティションへのINSERTが行われるだけのことですので、パーティションを使っていない場合に比べて速くなることはありません。

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

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

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

企業の基幹システムや業務システム、AIなどの
新領域での「PostgreSQL」の採用が拡大している中、
昇格・昇給・就職・転職に必ず役立つ認定です

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

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

サンプル問題/例題解説

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

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

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

無料技術解説セミナー

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

OSS-DB道場

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