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

練習問題

PostgreSQL CE 7.4 Gold

練習問題 (1):以下のSQL文でテーブルを定義し、10万行を挿入した。
テーブルのファイルサイズ見積もりとして最も適切なものを1つ選びなさい。
1ブロックは8192バイトとし、インデックスのファイルサイズは含めないものとする。

CREATE TABLE sales (
id BIGINT PRIMARY KEY,
salesclerk INTEGER NOT NULL,
sales_date TIMESTAMP NOT NULL
);
1. 1メガバイト
2. 2メガバイト
3. 5メガバイト
4. 10メガバイト
5. 20メガバイト

練習問題 (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):以下の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箇所で排他的なテーブルロックが取得されている。

練習問題 (4):以下の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テーブルの行数は15行と予測している。
2. 統計情報からitemテーブルの1行のサイズは31バイトと予測している
3. このプランでは先ずsalesテーブルを全件スキャンして number > 10 である行を選択し、その結果を item テーブルと結合している。
4. このプランでは先ずsalesテーブルとitemテーブルを結合して、その結果から number > 10 である行を選択している。
5. 統計情報と実際のデータとの隔たりが大きい。

練習問題 (5):CLUSTERコマンドについて、以下の選択肢から正しい説明を2つ選びなさい。
1. データの物理的順序を論理的順序にあわせて並び替えるコマンドである。
2. ロールバックできないコマンドの一つである。
3. 「CLUSTER テーブル名」で実行すると、そのテーブルの中で一番最初に作られたインデックスを元に並び替えを行う。
4. 実行後は、統計情報が狂っているためANALYZEを実行する必要がある。
5. 通常、実行前と実行後でパフォーマンスに変化は見られない。

練習問題 (6):postgresql.conf の shared_buffers と effecive_cache_size の関係について、以下の中から正しい記述を1つ選びなさい。
1. shared_buffers より effective_cache_size を小さくすると、キャッシュ性能が低下することがある。
2. shared_buffersを大きめに取っておけば、effctive_cache_sizeは小さくて良い。
3. どちらも共有メモリ資源に利用するパラメータである。
4. どちらもプランナが検索プランを決めるためのパラメーターである。
5. この2つには何の相関性もない。

練習問題 (7):postgresql.conf に commit_siblings = 5、commit_delay = 300 と設定した。
この設定の説明として、正しいものを1つ選びなさい。
1. 接続数が5以上ある場合、コミットとコミットの間隔は最低300マイクロ秒確保される。
2. 接続数が5以上ある場合、コミット時に最大300マイクロ秒遅延し、
 その間にコミットされた他のトランザクションがあれば同時に書き込みを行う。
3. 接続数が5以上ある場合、コミット時に300マイクロ秒の遅延が入る。
4. 現在更新のあるトランザクションが5以上ある場合、コミット時に最大300マイクロ秒遅延し、
 その間にコミットされた他のトランザクションがあれば同時に書き込みを行う。
5. 現在更新のあるトランザクションが5以上ある場合、コミットとコミットの間隔は最低300マイクロ秒確保される。

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

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

練習問題 (9):運用中のデータベースから突然データが消えてしまった。
データベースクラスタのディレクトリは一見すると特に異常は見られなかった。
これまでVACUUMを頻繁に更新される一部のテーブルのみに対して行ってきたという。
考えられる原因を以下の中から2つ選びなさい。
1. トランザクションログを限界まで使い切ってしまった。
2. OIDが32ビット量を超えて周回してしまった。
3. トランザクションIDが32ビット量を超えて周回してしまった。
4. コマンドIDが32ビット量を超えて周回してしまった。
5. データベースクラスタの global/pg_control ファイルが何らかの理由で破損した。

練習問題 (10):postgresql.conf で fsync = true と設定したにもかかわらず、サーバマシンの電源が突然落ちたとき、データベースのCOMMIT済みデータが書き込まれていなかった。
原因として考えられることを2つ選びなさい。
1. トランザクションログが配置されたディスクは、自身で書き込みキャッシュを持つものだった。
2. 当該データベースのテーブルファイルが配置されたディスクは、自身で書き込みキャッシュを持つものだった。
3. OS上のシステムコール実装に不具合があり、同期書き込み処理が行われていなかった。
4. スーパーユーザで接続して「SET fsync TO false」を実行する問い合わせが混入していた。
5. postgresql.conf で wal_buffers = 0 と設定していなかった。


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