PREPARATION
受験対策

Goldの例題解説「性能監視」(Ver.2.0)

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

修正等により、例題番号が連番ではない場合がございます。あらかじめご了承ください。

[性能監視 - クエリ実行計画] から

2.16 NEW

下記のEXPLAINの実行結果について、正しい記述を3つ選んでください。

postgres=# EXPLAIN SELECT relname,nspname FROM pg_class left join pg_namespace ON (pg_class.relnamespace = pg_namespace.oid);

                               QUERY PLAN

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

Hash Left Join  (cost=1.14..15.97 rows=288 width=128)

   Hash Cond: (pg_class.relnamespace = pg_namespace.oid)

   ->  Seq Scan on pg_class  (cost=0.00..10.88 rows=288 width=68)

   ->  Hash  (cost=1.06..1.06 rows=6 width=68)

         ->  Seq Scan on pg_namespace  (cost=0.00..1.06 rows=6 width=68)

(5 行)


  1. このEXPLAINコマンドを実行すると、引数に指定したSQL文が実際に実行される
  2. 計画ノードの「Hash Left Join」、「Seq Scan on pg_class」、「Seq Scan on pg_namespace」の記述は、プランナが自動選択した最適なデータ処理のアルゴリズムを示している
  3. 「cost=〜」の部分は、処理にかかる実際の時間を示している
  4. 「rows=〜」の部分は、それぞれの計画ノードを実行した際の推定の処理行数を示している
  5. 「width=〜」の部分は、統計情報をもとに推測される1行あたりの平均のバイトサイズを示している
 例題解説の提供:株式会社デージーネット OSS研究室 後藤 慎司 氏

[性能監視 - その他の性能監視] から

2.15 NEW

pg_stat_statementsの説明として正しいものは次のうちどれか。

  1. SQL文の実行に指定した時間以上かかった場合、それぞれのSQL文の実行に要した時間を記録する
  2. ロック待ちとなっているトランザクションや対象のテーブルを確認する
  3. 実行された全てのSQL文の実行時の統計情報を記録する
  4. データベースあたり1行の形式でデータベース全体の情報を表示する
  5. 現在のデータベースの各テーブルごとに1行の形で、テーブルへのアクセス統計情報を表示する
 例題解説の提供:株式会社デージーネット OSS研究室 奥原 章太 氏

[性能監視 - アクセス統計情報] から

2.14

pg_classに関する記述の中で、正しいものを2つ選びなさい。

  1. relpages列にはテーブル内の行数が格納されている
  2. pg_classはテーブルの情報のみを格納している
  3. pg_class内には常に最新の情報が格納されている
  4. relpages列の値は推測値である
  5. pg_classに格納されている統計情報は一部のDDLコマンドで更新される
 例題解説の提供:株式会社デージーネット OSS研究室 橋本 知里 氏

[性能監視 - アクセス統計情報] から

2.13

テーブルへのアクセスの統計情報を表示する方法として、正しいSQL文を選択してください。

  1. SELECT * FROM pg_stat_activity;
  2. SELECT * FROM pg_stat_database;
  3. SELECT * FROM pg_stat_bgwriter;
  4. SELECT * FROM pg_stat_all_tables;
  5. SELECT * FROM pg_stat_all_indexes;
 例題解説の提供:株式会社デージーネット OSS研究室 大野 公善 氏

[性能監視 - アクセス統計情報] から

2.12

pg_locksビューによって確認することが可能なロックの対象となるオブジェクトを全て選択しなさい。

  1. データベース
  2. リレーション
  3. タプル
  4. カラム
  5. パラメータ
 例題解説の提供:株式会社メトロシステムズ OSS-DB Gold 認定者 岡野 慎也 氏

[性能監視 - クエリ実行計画] から

2.11

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. pgbench_accountsのabalance列にインデックスを作成する

  2. pgbench_branchesのbid列にインデックスを作成する
  3. pgbench_accountsを対象にANALYZEを実行する
  4. pgbench_accountsのaid列にインデックスを作成する

  5. pgbench_branchesを対象にANALYZEを実行する

 例題解説の提供:OSS-DBアカデミック認定校 NTTテクノクロス株式会社 OSS-DB Gold 認定者 勝俣 智成 氏

[性能監視 - クエリ実行計画] から

2.10

EXPLAINコマンドで指定可能な出力形式のうち誤っているものを全て選択しなさい。

  1. JSON
  2. HTML
  3. CSV
  4. YAML
  5. XML
 例題解説の提供:株式会社メトロシステムズ 佐藤 千佳 氏

[性能監視 - クエリ実行計画] から

2.09

EXPLAINコマンドを使用することで、問い合わせ文の実行計画を表示することができる。
EXPLAINコマンドの対象となるSQLコマンドとして正しいものを全て選択しなさい。

  1. DELETE
  2. DROP TABLE
  3. REINDEX
  4. PREPARE
  5. EXECUTE
 例題解説の提供:株式会社メトロシステムズ 佐藤 千佳 氏

[性能監視 - アクセス統計情報、関連パラメータ] から

2.08

標準統計情報ビューに関して正しいものを全て選択しなさい。

  1. pg_stat_all_tablesから、TOASTテーブルから読み取られたディスクブロック数を取得することができる。
  2. pg_stat_activityから、現在の問い合わせの実行開始時刻を取得することができる。
  3. pg_stat_databaseから、対象データベースのエラー発生数を取得することができる。
  4. pg_statio_all_tablesから、対象テーブルのバッファヒット数を取得することができる。

 例題解説の提供:株式会社メトロシステムズ OSS-DB Gold 認定者 岡野 慎也 氏

[性能監視 - アクセス統計情報、関連パラメータ] から

2.07

pg_stat_databaseに関する記述で誤っているものを全て選択しなさい。

  1. データベースクラスタ全体の稼働統計情報が1行だけ格納される。
  2. blks_hitはバッファキャッシュにヒットしたブロック数が格納される。
  3. blks_readはディスクから読み込んだブロック数とバッファキャッシュから読み込んだブロック数の合計である。
  4. デフォルトではtrack_countsパラメータがoffであるため、稼働統計情報が収集されない。
  5. tup_fetchedはインデックススキャンを使用して読み取った行数が格納される。

 例題解説の提供:株式会社メトロシステムズ 成瀬 智一 氏

[性能監視 - アクセス統計情報] から

2.06

ロングトランザクションを発見するのに有効なシステムカタログについての解説で、適切なものを選びなさい。

  1. pg_stat_activityのwaitingを監視する
  2. pg_stat_activityのquery_startを監視する
  3. pg_stat_activityのxact_startを監視する
  4. ロングトランザクションを発見するのに有効なシステムカタログは無い

[性能監視 - oid2name] から

2.05

oid2nameの使い方として誤っているものを1つ選びなさい。

  1. データベースのOID一覧を取得するため以下のコマンドを実行した
     $ oid2name
  2. 別ホストsrv上の5432ポートで動作するPostgreSQLのデータベースのOID一覧を取得するため以下のコマンドを実行した
     $ oid2name -h srv -p 5432
  3. データベースtestdbに含まれるテーブルのファイルノード番号一覧を取得するため以下のコマンドを実行した
     $ oid2name -d testdb
  4. テーブル空間のOID一覧を取得するため以下のコマンドを実行した
     $ oid2name -s
  5. データベースtestdbに含まれるテーブル/インデックス/シーケンスのファイルノード一覧を取得するため以下のコマンドを実行した
     $ oid2name -i -d testdb
 例題解説の提供:OSS-DBアカデミック認定校 NTTテクノクロス株式会社 OSS-DB Gold 認定者 勝俣 智成 氏

[性能監視 - テーブル/カラム統計情報] から

2.03

テーブル/カラム統計情報に関する記述の中で、正しいものを2つ選びなさい

  1. pg_classでは、テーブルのほか、ビューやインデックスの情報も扱う。

  2. pg_classには、常に最新の情報が格納されている。
  3. pg_class内の列であるreltuplesにはテーブル内の行数が格納されるが、この値は推測値である。
  4. pg_statsは、カラム統計情報を扱うテーブルである。
  5. pg_statsで参照できる情報の中には実データの一部が格納されるため、一般のユーザは参照できない。
 例題解説の提供:OSS-DBアカデミック認定校 NTTテクノクロス株式会社 OSS-DB Gold 認定者 中津川 保 

[性能監視 - クエリ実行計画] から

2.02

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. この問い合わせにより出力される行数は97行であった。
  2. Total runtime には、結果行を操作するための時間の他に、エクゼキュータの起動、停止時間も含まれている。
  3. table2_i2 という名前のインデックスを用いて検索をしている。
  4. Nested Loop の cost と actual time の値が大きく異なっているので、統計情報の再収集が必要である。
  5. table1 が外側、table2 が内側になるネステッドループで結合をしている。
 例題解説の提供:OSS-DBアカデミック認定校 NTTテクノクロス株式会社 OSS-DB Gold 認定者 中津川 保 氏

[性能監視 - アクセス統計情報] から

2.01

pg_stat_database, pg_stat_all_tables などのアクセス統計情報(稼働統計情報)のビューに関する説明として、適切なものを2つ選びなさい。

  1. ANALYZE コマンドを実行したときにデータが収集される。
  2. stats collector プロセスによって定期的にデータが収集される。
  3. テーブルの行数、最大値・最小値、データの分布など、テーブル内のデータの状態が収集される。
  4. プランナが SQL の最適な実行計画を作成するために利用される。

  5. システム全体のスループットの調査、パフォーマンス問題の発見などに使われる。

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

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

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

サンプル問題/例題解説

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

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

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

無料技術解説セミナー

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

OSS-DB道場

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

応募者全員プレゼント!
オープンソース データベース標準教科書 -PostgreSQL-