今回は、Silverの「開発/SQL - SQLコマンド(テーブルスペース)」からの出題です。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2019年4月23日
PostgreSQLのデータベースクラスタは環境変数PGDATAが指すディレクトリの下に置かれますが、テーブルスペース(あるいは、テーブル空間)の機能を使うことで、そこからシンボリックリンクされた別のディレクトリにデータベースオブジェクトを格納することができます。
これは、ディスク容量の不足を補うため、あるいは、データベースへのアクセスを物理的に異なる複数のディスクに分散させることでパフォーマンスを向上させるためなどに使うことができます。
CREATE DATABASEは内部的にはテンプレートデータベースをコピーする処理が行われますが、このとき、デフォルトではテンプレートデータベースと同じテーブルスペースに新しいデータベースが作られます。TABLESPACEオプションを指定することで、デフォルトとは異なるテーブルスペースを使うことができます。
CREATE TABLEやCREATE INDEXでテーブルやインデックスを作るとき、デフォルトでは設定パラメータのdefault_tablespaceで指定されたテーブルスペースにオブジェクトが作成されます。これらもTABLESPACEオプションを指定することで、デフォルトとは異なるテーブルスペースを使うことができます。また、CREATE TABLEやALTER TABLEでUNIQUEやPRIMARY KEYの制約をつけると、自動的にインデックスが作られますが、この場合はUSING INDEX TABLESPACEオプションを指定すれば、テーブルとは別のテーブルスペースにインデックスを作ることができます。
スキーマはデータベースオブジェクトの名前空間を定義するだけで、それ自体がデータを保持しているわけではないので、テーブルスペースとの関連付けはありません。
ビューはそれを定義するSQL文の文字列がデータベースに格納されるだけで、データ自体はビューが参照するテーブルに格納されたままですから、やはりテーブルスペースとの関連付けはありません。ただし、マテリアライズド・ビューの場合は、元のテーブルとは別にデータを保持しますので、使用するテーブルスペースを指定することができるので注意してください。
従って、正解はA、C、Eです。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.