LPI-JapanLevel 4

難易度は Level 1(やさしめ)〜Level 5(難関) の5段階です。

OSS-DB Goldのサンプル問題(本番形式・解説付き)

OSS-DB Gold(LPI-Japan・OSS-DB Exam Gold(Ver.3.0・PostgreSQL))の出題形式を、実際の問題で確かめられます。ここに掲載する5問は、無料の会員登録で解ける模試 第1回(30問)の冒頭から抜粋したオリジナル問題です。当サイトは全345問を本番CBT準拠の形式で収録しており、この5問はそのごく一部にあたります。

設問1

PITR で過去の時点まで戻して昇格したときの、タイムラインの扱いとして適切なものはどれか。

  • 同じ時刻へ戻して2回昇格すれば、同じタイムラインの上に同じ状態が作られる
  • タイムライン ID は据え置かれ、昇格した時点から WAL の番号だけが振り直される
  • タイムライン ID が1つ進み、分岐を記録する .history ファイルが作られる(正解)
  • WAL ファイル名の末尾8桁が、新しいタイムライン ID に書き換えられる

解説

昇格するとタイムライン ID が1つ進み、分岐を記録する .history ファイルが作られます。同じ時刻へ戻して昇格しても、別のタイムラインとして分かれます(根拠: 学習用テキスト 2-2 物理バックアップ ── pg_basebackup と PITR/タイムラインという考え方 [G1.2])。戻して昇格するたびに別のタイムラインへ分岐するので、同じ歴史にはなりません。昇格するとタイムライン ID は1つ進み、据え置かれることはありません。タイムライン ID が入るのは WAL ファイル名の先頭8桁です。

他の選択肢が誤りである理由

  • 「同じ時刻へ戻して2回昇格すれば、同じタイムラインの上に同じ状態が作られる」戻して昇格するたびに別のタイムラインへ分岐するので、同じ歴史にはなりません。
  • 「タイムライン ID は据え置かれ、昇格した時点から WAL の番号だけが振り直される」昇格するとタイムライン ID は1つ進み、据え置かれることはありません。
  • 「WAL ファイル名の末尾8桁が、新しいタイムライン ID に書き換えられる」タイムライン ID が入るのは WAL ファイル名の先頭8桁です。

設問2

稼働統計ビューと、そこから読み取れる内容の組み合わせについて、適切なものを2つ選べ。

  • pg_stat_archiver では WAL のアーカイブの失敗回数を確認できる(正解)
  • pg_statio_all_tables ではテーブルごとの行の挿入数を確認できる
  • pg_stat_progress_vacuum では実行中の VACUUM の進み具合が分かる(正解)
  • pg_stat_bgwriter ではデータベースごとの接続数を確認できる
  • pg_stat_wal では待機イベントの種別ごとの件数を確認できる

解説

pg_stat_archiver は failed_count などアーカイブの成否を、pg_stat_progress_vacuum は実行中の VACUUM の進捗を示します。行レベルの統計は pg_stat_all_tables、ブロックレベルは pg_statio_all_tables の担当です。(根拠: 学習用テキスト 5-6 その他の稼働統計ビュー [G2.1])行の挿入数は pg_stat_all_tables の n_tup_ins が持っています。接続数は pg_stat_database の numbackends が持っています。待機イベントは pg_stat_activity の wait_event_type と wait_event で見ます。

他の選択肢が誤りである理由

  • 「pg_statio_all_tables ではテーブルごとの行の挿入数を確認できる」行の挿入数は pg_stat_all_tables の n_tup_ins が持っています。
  • 「pg_stat_bgwriter ではデータベースごとの接続数を確認できる」接続数は pg_stat_database の numbackends が持っています。
  • 「pg_stat_wal では待機イベントの種別ごとの件数を確認できる」待機イベントは pg_stat_activity の wait_event_type と wait_event で見ます。

設問3

設定ファイルの変更をサーバに再読み込みさせる SQL 関数の名前を入力せよ(関数名だけを答えること)。

入力形式(コマンドを打ち込んで答える問題です)

pg_reload_conf()(正解)

別解: pg_reload_conf / PG_RELOAD_CONF() / SELECT pg_reload_conf(); / select pg_reload_conf();

解説

設定の再読み込みは SELECT pg_reload_conf(); で行います。pg_ctl reload や kill -HUP でも同じ結果になります。(根拠: 学習用テキスト 10-1 パラメータの反映方法 ── 有効化に必要なアクション [G3.2])

設問4

idle_in_transaction_session_timeout を超えたセッションについて、サーバログに現れる内容として適切なものはどれか。

  • ERROR のレベルで記録され文だけが中断される
  • WARNING のレベルで記録され接続はそのまま保持される
  • LOG のレベルで記録され次の文の実行まで保持される
  • FATAL のレベルで記録されセッションが切断される(正解)

解説

idle_in_transaction_session_timeout の超過は FATAL となり、セッションごと切断されます。(根拠: 学習用テキスト 11-1 タイムアウト系の3つのパラメータ [G4.1])ERROR で文だけが失敗するのは statement_timeout と lock_timeout の側です。警告にとどめる扱いではなく、超過したセッションは切られます。記録だけを行って接続を残す扱いではありません。

他の選択肢が誤りである理由

  • 「ERROR のレベルで記録され文だけが中断される」ERROR で文だけが失敗するのは statement_timeout と lock_timeout の側です。
  • 「WARNING のレベルで記録され接続はそのまま保持される」警告にとどめる扱いではなく、超過したセッションは切られます。
  • 「LOG のレベルで記録され次の文の実行まで保持される」記録だけを行って接続を残す扱いではありません。

設問5

肥大したテーブルの実ファイルを縮めて、領域を OS へ返したい。実行するものとして適切なものはどれか。

  • VACUUM を実行し、デッドタプルを回収してファイルごと書き直す
  • VACUUM FULL を実行し、テーブルを新しいファイルへ書き直す(正解)
  • 自動バキュームのしきい値を下げ、対象のテーブルを頻繁に回す
  • ANALYZE を実行し、テーブルの統計情報を取り直す

解説

実ファイルを縮めて OS に領域を返すのは VACUUM FULL です。テーブルを新しいファイルへ書き直すため ACCESS EXCLUSIVE を取り、参照もブロックします(根拠: 学習用テキスト 2-3 VACUUM ── 不要行の回収/VACUUM と VACUUM FULL は別物 [G1.2])。VACUUM はデッドタプルを再利用可能にするだけで、末尾の空き以外はファイルに残ります。自動バキュームは VACUUM FULL を実行しないので、肥大は解消されません。ANALYZE が更新するのは統計情報で、ファイルの大きさには手を付けません。

他の選択肢が誤りである理由

  • 「VACUUM を実行し、デッドタプルを回収してファイルごと書き直す」VACUUM はデッドタプルを再利用可能にするだけで、末尾の空き以外はファイルに残ります。
  • 「自動バキュームのしきい値を下げ、対象のテーブルを頻繁に回す」自動バキュームは VACUUM FULL を実行しないので、肥大は解消されません。
  • 「ANALYZE を実行し、テーブルの統計情報を取り直す」ANALYZE が更新するのは統計情報で、ファイルの大きさには手を付けません。

続きは、会員登録なしでそのまま50問解けます。採点と解説つきで、上と同じ本物の問題です。

登録なしで50問解く