お知らせPostgreSQL CE とは認定資格お申し込みスクール/参考図書お問い合わせ

練習問題

PostgreSQL CE 8.0 Gold

練習問題 (1):以下のSQL文でテーブルを定義し、100万行を挿入した。

CREATE TABLE sales (
id INT PRIMRY KEY,
log_time TIMESTAMP NOT NULL,
message CHAR(40) NOT NULL
);

テーブルとインデックスの合計ファイルサイズ見積もりとして最も適切なものを1つ選びなさい。
1ブロックは8192バイトとし、インデックスはBtreeで空き領域は30%程度と見積もるものとする。
1. 10メガバイト
2. 30メガバイト
3. 50メガバイト
4. 80メガバイト
5. 100メガバイト

練習問題 (2):以下はpsqlで、あるSQL文を実行したときの出力結果の一部である。
最も適切なSQL文を1つ選びなさい。

DETAIL: CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: "tbl": found 4 removable, 1 nonremovable row versions in 1 pages
DETAIL: 0 dead row versions cannot be removed yet.
There were 0 unused item pointers.
0 pages are entirely empty.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: "toast_item": truncated 1 to 0 pages
1. TRUNCATE tbl
2. VACUUM VERBOSE
3. ANALYZE VERBOSE
4. EXPLAIN ANALYZE
5. CLUSTER

練習問題 (3):PostgreSQLのログについて、postgresql.conf で設定できないものを以下から1つ選びなさい。
1. 特定のテーブルにアクセスするSQL文のみを出力する。
2. Windowsのイベントログに出力する。
3. NOTICE、WARNING、ERRORなどが発生した場合に、対応するSQL文を出力する。
4. 1日ごとにログの出力先ファイル名を切り替える。
5. 接続開始と、接続終了のログを全て取る。

練習問題 (4):PITRで可能だが、pg_dumpに出来ないバックアップ手法として、正しいものを1つ選びなさい。
1. 1テーブルのみのバックアップ
2. テーブルのスキーマのみのバックアップ
3. 1データベースのみのバックアップ
4. インデックス定義のみのバックアップ
5. postgresql.confファイルのバックアップ

練習問題 (5):PostgreSQLのアクセス統計情報で、取得可能なものを以下から2つ選びなさい。
1. セッション中の問い合わせ履歴
2. 各セッションで現在実行中のSQL文
3. テーブルごとのディスク読み込みI/O量
4. シーケンスに対するアクセス回数
5. テーブルごとのディスク書き込みI/O量

練習問題 (6):以下のSQL実行結果からいえることを2つ選びなさい。

 =# SELECT * FROM pg_locks ;
  relation | database | transaction | pid | mode | granted
 ----------+----------+-------------+------+-----------------+---------
  177381 | 177205 | | 3738 | AccessShareLock | t
  177381 | 177205 | | 3738 | RowShareLock | t
  | | 1226 | 3738 | ExclusiveLock | t
  16759 | 177205 | | 3736 | AccessShareLock | t
  | | 1228 | 3736 | ExclusiveLock | t
(5 rows)
1. 少なくともバックエンドが2つ以上稼動している。
2. ロック待ちをしているプロセスは5つある。
3. ロック待ちをしているプロセスは2つある。
4. pg_locks自身を除いて、1箇所で行ロックが取得されている。
5. pg_locks自身を除いて、1箇所で排他的なテーブルロックが取得されている。

練習問題 (7):以下はあるSQL文を実行した結果である。

QUERY PLAN
-------------------------------------------------------------------
HashAggregate (cost=410.07..410.07 rows=1000 width=19) ...(1)
-> Hash Join (cost=19.50..359.83 rows=10049 width=19) ...(2)
Hash Cond: ("outer".iid = "inner".id)
-> Seq Scan on sales s
(cost=0.00..164.48 rows=10048 width=4) ...(3)
-> Hash (cost=17.00..17.00 rows=1000 width=23)
-> Seq Scan on item i
(cost=0.00..17.00 rows=1000 width=23) ...(4)
(6 rows)

結果中(1)のような形で示されているクエリオペレータの実行順として、もっとも適切なものを以下から選びなさい。
1. (3)→(4)→(2)→(1)
2. (1)→(2)→(3)→(4)
3. (1)→(3)→(4)→(2)
4. (4)→(3)→(2)→(1)
5. (2)→(3)→(4)→(1)

練習問題 (8):VACUUM の遅延に関する設定で間違った説明を1つ選びなさい。
1. vacuum_cost_delay は、遅延コストを越えた場合にプロセスを休止させる時間をミリ秒単位で設定する。
2. vacuum_cost_page_hit は、VACUUM の必要無いバッファをアクセスした場合のコストを設定する。
3. vacuum_cost_page_miss は、共有バッファに存在せず、ディスクにあるページを VACUUM した場合のコストを設定する。
4. vacuum_cost_page_dirty は、ダーティバッファを VACUUM した場合のコストを設定する。
5. vacuum_cost_limit は、プロセスを休止させる累計コストを設定する。

練習問題 (9):以下のSQL実行結果から読み取れることを2つ選びなさい。

=> EXPLAIN SELECT i.name FROM sales s
-> JOIN item i ON i.id = s.item_id WHERE s.number > 10;
  QUERY PLAN
 -------------------------------------------------------------------
  Hash Join (cost=2.27..3.74 rows=6 width=31)
  Hash Cond: ("outer".id = "inner".item_id)
  -> Seq Scan on item i (cost=0.00..1.15 rows=15 width=35)
  -> Hash (cost=2.25..2.25 rows=6 width=4)
  -> Seq Scan on sales s (cost=0.00..2.25 rows=6 width=4)
  Filter: (number > 10)
 (6 rows)
1. 統計情報からitemテーブルの1行のサイズは31バイトと予測している
2. このプランでは先ずsalesテーブルを全件スキャンして number > 10 である行を選択し、その結果を item テーブルと結合している。
3. 統計情報からitemテーブルの行数は15行と予測している。
4. 統計情報と実際のデータとの隔たりが大きい。
5. このプランでは先ずsalesテーブルとitemテーブルを結合して、その結果から number > 10 である行を選択している。

練習問題 (10):SELECT文の処理の流れとして(1)〜(5)の適切な順番を1つ選択しなさい。

(1) 問い合わせ内容に該当し、自身のトランザクションIDと比較して可視であるデータをフロントエンドに返す。
(2) 計画に従って共有バッファからデータを読み出す。
  共有バッファ上に無ければディスク上のファイルからデータを読み出す。
(3) ビューやルールの定義にしたがって問い合わせを書き換える。
(4) 問い合わせを構文解析する。
(5) 統計情報を元にコスト計算を行い、問い合わせに対するデータ検索方法を決める。
1. (4) → (2) → (3) → (5) → (1)
2. (3) → (4) → (5) → (2) → (1)
3. (4) → (3) → (5) → (2) → (1)
4. (1) → (2) → (3) → (5) → (4)
5. (3) → (4) → (2) → (1) → (5)


Copyright © 2005-2010 SRA OSS, Inc. All rights reserved.