HOME > 受験対策 > サンプル問題/例題解説 > Goldの例題解説「性能監視」

Goldの例題解説「性能監視」

Yahoo!ブックマークに登録

このページでは例題「性能監視」のアーカイブを試験ごとにまとめています。是非、OSS-DB技術者認定試験の学習にお役立てください。

[性能監視 - アクセス統計情報] から
Q. pg_locksビューによって確認することが可能なロックの対象となるオブジェクトを全て選択しなさい。
  1. A. データベース
  2. B. リレーション
  3. C. タプル
  4. D. カラム
  5. E. パラメータ

[性能監視 - クエリ実行計画] から
Q. EXPLAIN ANALYZE SELECT * FROM pgbench_accounts a
JOIN pgbench_branches b ON (a.bid = b.bid) WHERE a.aid = 10000;
上記問い合わせの実行計画(EXPLAIN ANALYZE)を確認したところ、下記の出力であった。

QUERY PLAN

-----------------------------------------------------------------------------------------------------------------------------------

Nested Loop (cost=0.00..2891.02 rows=1 width=461) (actual time=4.589..64.393 rows=1 loops=1)
   Join Filter: (a.bid = b.bid)
   -> Seq Scan on pgbench_accounts a (cost=0.00..2890.00 rows=1 width=97) (actual time=4.555..64.356 rows=1 loops=1)
         Filter: (aid = 10000)
         Rows Removed by Filter: 99999
   -> Seq Scan on pgbench_branches b (cost=0.00..1.01 rows=1 width=364) (actual time=0.007..0.008 rows=1 loops=1)
Total runtime: 64.557 ms
(7 rows)

上記問い合わせをより高速にするために行うこととして最も適切なものをひとつ選びなさい。
なお、各テーブルの構成は下記のようになっている。

----------------------------------------------------

Table "public.pgbench_accounts"
Column | Type | Modifiers
---------- + --------------- + -----------
aid | integer | not null
bid | integer |  
abalance | integer |  
filler | character(84) |  

----------------------------------------------------

----------------------------------------------------

Table "public.pgbench_branches"
Column | Type | Modifiers
---------- + --------------- + -----------
bid | integer | not null
bbalance | integer |  
filler | character(88) |  

Indexes:
    "pgbench_branches_pkey" PRIMARY KEY, btree (bid)

----------------------------------------------------

  1. A. pgbench_accountsのabalance列にインデックスを作成する
  2. B. pgbench_branchesのbid列にインデックスを作成する
  3. C. pgbench_accountsを対象にANALYZEを実行する
  4. D. pgbench_accountsのaid列にインデックスを作成する
  5. E. pgbench_branchesを対象にANALYZEを実行する

[性能監視 - クエリ実行計画] から
Q. EXPLAINコマンドで指定可能な出力形式のうち誤っているものを全て選択しなさい。
  1. A. JSON
  2. B. HTML
  3. C. CSV
  4. D. YAML
  5. E. XML

「性能監視 - クエリ実行計画」
Q. EXPLAINコマンドを使用することで、問い合わせ文の実行計画を表示することができる。
EXPLAINコマンドの対象となるSQLコマンドとして正しいものを全て選択しなさい。
  1. A. DELETE
  2. B. DROP TABLE
  3. C. REINDEX
  4. D. PREPARE
  5. E. EXECUTE

[性能監視 - アクセス統計情報、関連パラメータ] から
Q. 標準統計情報ビューに関して正しいものを全て選択しなさい。
  1. A. pg_stat_all_tablesから、TOASTテーブルから読み取られたディスクブロック数を取得することができる。
  2. B. pg_stat_activityから、現在の問い合わせの実行開始時刻を取得することができる。
  3. C. pg_stat_databaseから、対象データベースのエラー発生数を取得することができる。
  4. D. pg_statio_all_tablesから、対象テーブルのバッファヒット数を取得することができる。

[性能監視 - アクセス統計情報、関連パラメータ] から
Q. pg_stat_databaseに関する記述で誤っているものを全て選択しなさい。
  1. A. データベースクラスタ全体の稼働統計情報が1行だけ格納される。
  2. B. blks_hitはバッファキャッシュにヒットしたブロック数が格納される。
  3. C. blks_readはディスクから読み込んだブロック数とバッファキャッシュから読み込んだブロック数の合計である。
  4. D. デフォルトではtrack_countsパラメータがoffであるため、稼働統計情報が収集されない。
  5. E. tup_fetchedはインデックススキャンを使用して読み取った行数が格納される。

[性能監視 - アクセス統計情報] から
Q. ロングトランザクションを発見するのに有効なシステムカタログについての解説で、適切なものを選びなさい。
  1. A. pg_stat_activityのwaitingを監視する
  2. B. pg_stat_activityのquery_startを監視する
  3. C. pg_stat_activityのxact_startを監視する
  4. D. ロングトランザクションを発見するのに有効なシステムカタログは無い

[性能監視 - oid2name] から
Q. oid2nameの使い方として誤っているものを1つ選びなさい。
  1. A. データベースのOID一覧を取得するため以下のコマンドを実行した
     $ oid2name
  2. B. 別ホストsrv上の5432ポートで動作するPostgreSQLのデータベースのOID一覧を取得するため以下のコマンドを実行した
     $ oid2name -h srv -p 5432
  3. C. データベースtestdbに含まれるテーブルのファイルノード番号一覧を取得するため以下のコマンドを実行した
     $ oid2name -d testdb
  4. D. テーブル空間のOID一覧を取得するため以下のコマンドを実行した
     $ oid2name -s
  5. E. データベースtestdbに含まれるテーブル/インデックス/シーケンスのファイルノード一覧を取得するため以下のコマンドを実行した
     $ oid2name -i -d testdb

[性能監視 - pg_locks] から
Q. pg_locksシステムビューから参照できる情報として適切ではないものを1つ選びなさい。
  1. A. ロック対象のオブジェクトの種類
  2. B. トランザクションのID
  3. C. クエリ文字列
  4. D. ロックを保持、もしくは待機しているサーバプロセスのプロセスID
  5. E. ロックモード

[性能監視 - テーブル/カラム統計情報] から
Q. テーブル/カラム統計情報に関する記述の中で、正しいものを2つ選びなさい。
  1. A. pg_classでは、テーブルのほか、ビューやインデックスの情報も扱う。
  2. B. pg_classには、常に最新の情報が格納されている。
  3. C. pg_class内の列であるreltuplesにはテーブル内の行数が格納されるが、この値は推測値である。
  4. D. pg_statsは、カラム統計情報を扱うテーブルである。
  5. E. pg_statsで参照できる情報の中には実データの一部が格納されるため、一般のユーザは参照できない。

[性能監視 - クエリ実行計画] から
Q. EXPLAINコマンドを用いて問い合わせを実行させ、結果が出力された。

EXPLAIN ANALYZE SELECT *
FROM table1 t1, table2 t2
WHERE t1.unique1 < 100 AND t1.unique2 = t2.unique2;

QUERY PLAN

-----------------------------------------------------------------------------------------------------------------------------------

Nested Loop (cost=0.00..352.17 rows=97 width=16) (actual time=0.033..1.875 rows=100 loops=1)
   -> Index Scan using table1_i1 on table1 t1 (cost=0.00..24.05 rows=97 width=8) (actual time=0.016..0.218 rows=100 loops=1)
         Index Cond: (unique1 < 100)
   -> Index Scan using table2_i2 on table2 t2 (cost=0.00..3.27 rows=1 width=8) (actual time=0.004..0.006 rows=1 loops=100)
         Index Cond: (t2.unique2 = t1.unique2)
Total runtime: 2.065 ms

この結果言えることとして、誤っているものを2つ選択せよ。

  1. A. この問い合わせにより出力される行数は97行であった。
  2. B. Total runtime には、結果行を操作するための時間の他に、エクゼキュータの起動、停止時間も含まれている。
  3. C. table2_i2 という名前のインデックスを用いて検索をしている。
  4. D. Nested Loop の cost と actual time の値が大きく異なっているので、統計情報の再収集が必要である。
  5. E. table1 が外側、table2 が内側になるネステッドループで結合をしている。

[性能監視 - アクセス統計情報] から
Q. pg_stat_database, pg_stat_all_tables などのアクセス統計情報(稼働統計情報)のビューに関する説明として、適切なものを2つ選びなさい。
  1. A. ANALYZE コマンドを実行したときにデータが収集される。
  2. B. stats collector プロセスによって定期的にデータが収集される。
  3. C. テーブルの行数、最大値・最小値、データの分布など、テーブル内のデータの状態が収集される。
  4. D. プランナが SQL の最適な実行計画を作成するために利用される。
  5. E. システム全体のスループットの調査、パフォーマンス問題の発見などに使われる。

ページトップへ