データベース技術調査ブログ

LinuxやPostgreSQL、Oracleデータベース、AWSの知識をアウトプットしていきます

【PostgreSQL】OSS-DB Gold ver.2.0 合格体験記

先日OSS-DB Exam Gold (ver.2.0)の試験に合格したので学習方法など参考になればと思いまとめておきます。正直勉強時間足りていないなと思いつつ当日を迎えてしまいましたが、何とかギリギリ合格ラインに滑り込めました。(試験時間ぎりぎりまで考えて心の準備をする間もなく、次の画面で結果出てきて、思わず小声で「ギリギリじゃん!」とつぶやいてしまいました(-_-;)分かってはいたけど、もう少し心の準備させてほしい(笑))

試験結果

それぞれどのくらいの得点だったかというと…

スコア

70点(合格ライン70点)ギリギリ…

セクションごとの得点

セクション名                | 正解率
---------------------------+----------
運用管理                    | 88%
性能監視                    | 55%
パフォーマンスチューニング   | 33%
障害対応                    | 100%

パフォーマンスチューニングの分野が全然取れませんでした。もっと細かく実行計画とか見ていくことでチューニングの勘所とか身につけていこうと思います。

資格試験は自分の実力を把握するという目的でも受けているので、合否に一喜一憂するのでなく、スコアレポートを元にさらなるスキルアップに向けたインプットにするのが大事だと思っています。(いいこと言った!)

学習方法

参考になればと思い、学習の過程を残しておきます。

f:id:jimatomo:20201212224611j:plain
学習スケジュール

参考書

Goldの対策としても真価を発揮した参考書

傾向と対策

Gold対策として、公式サイトの出題範囲の情報とドキュメントを照らし合わせながら勉強しました。出題範囲に合わせてキーワードがあるのでそれを中心に調べていきました。すべての範囲ができなかったのが反省点です。(10%割引で買えるタイミングでSilverとGoldのチケット買ってしまい気づけば期限が来てしまったというのが一つの言い訳)

もっとやっておけばよかったと思うところ

自分の備忘もかねて残しておきます。

インデックスの容量見積もり

テーブルしか勉強していなくて困った。
https://www.postgresql.jp/document/12/html/storage-page-layout.html

こちらも参考になります。
qiita.com

fsyncやsynchronous_commitはじめとする性能と耐障害性のトレードオフの関係まわり

試験範囲を見て傾向と対策をしっかり練っていくとわかるのですが、いろんなところに複数回登場するので人に教えられるレベルで理解しておくといいです。
https://www.postgresql.jp/document/12/html/runtime-config-wal.html#RUNTIME-CONFIG-WAL-SETTINGS

メモリ関係のパラメータ

共有メモリとワーク系のメモリを区別しましょう
https://www.postgresql.jp/document/12/html/runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-MEMORY

共有メモリとしてwal_buffersも忘れずに…
https://www.postgresql.jp/document/12/html/runtime-config-wal.html#RUNTIME-CONFIG-WAL-SETTINGS

インデックスオンリースキャン

ふわっとした理解で足元救われた感じ。ちゃんと理解していないことを試験の中で気づかされた…
https://www.postgresql.jp/document/12/html/indexes-index-only-scans.html

pg_prewarm(拡張モジュール)

初めて知った…パフォーマンスチューニングとか辺りで2問くらい絡んできた気がするので、この機に検証してみよう(^^♪
https://www.postgresql.jp/document/12/html/pgprewarm.html

おまけ(なんとなく意味は察したけど、ちゃんと知っておいた方がいいなと思った系)

パラレル安全
https://www.postgresql.jp/document/12/html/parallel-safety.html

ignore_checksum_failure:生きているタプルだけでも救出しようとサルベージするときにチェックサムを無視してもらう。
ignore_system_indexes:時間なくて抑えられていなかったところ。システムカタログのインデックスがやられたときのREINDEXでの復旧という荒業(実際の運用ではやりたくないし、出会いたくもない)の例がでてきました。
https://www.postgresql.jp/document/12/html/runtime-config-developer.html


最後に

クラウド時代に合わせて身に着けておきたかったPostgreSQLを学習し始めて約1年。目標であったOSS-DB Goldの認定を取得できていい年末になった気がします。勉強始めたときの最新版はPostgreSQL12だったけれども、気づけばPostgreSQL13が出てきて着実に進歩しているの見ると、本当に変化が速いなと感じます(*´ω`*)

私も1年ごとにバージョンアップして新機能(技術)をつけていきつつも、後方互換性が少しずつ無くなっていっているのを実感しています(触らなくなった技術を少しずつ忘れていく)。人間だもの

それでもコアとなる思想的なところは忘れずにいたいと思います。そうすれば忘れたことも思い出しやすくなるだろうし、他のところで役に立つときがきっと来るので。


まだまだ奥が深いPostgreSQLの世界。今後も継続して機能検証を進めていこうと思います(*^▽^*)