LoginSignup
4

More than 5 years have passed since last update.

PostgreSQL 10パラメータ差分

Last updated at Posted at 2017-12-07

はじめに

にゃーん
この記事は、PostgreSQL 10全部ぬこ Advent Calendar 2017 の8日目のエントリです。

PostgreSQLパラメータの差分をとってみる

毎回、新バージョンのベータ版がでそうな時期に、PostgreSQLパラメータの調査をするんだけど、そのときに前バージョンとの比較も実施する。
比較方法として最初に思いつくのはSHOW ALLで、前バージョンと新バージョンの出力結果をとって、その差分を見るというものだが、意外とこの方法は面倒くさい。
というのは、SHOW ALLでは、name(パラメータ名)、setting(設定値)、description(説明)を表示するのだが、パラメータ名や設定値に変更がなくとも、説明の変更が入ることがあり、それが差分として出力されてしまう。また、説明の変更により1行の最大長が変わると、diffとるときに全体に影響が出かねない。面倒な。

なので、自分で差分を調査する場合には、psqlをつかって、以下のような手順でpg_settingsカタログを直接SELECTで参照することが多い。

  • 前バージョン、新バージョンそれぞれinitdbしておき、パラメータを変更せずに起動する。
    • portの差分はでるが、それは既知のことなので差分としては無視できる。
  • psql上で差分をとる
    • psqlに特権ユーザでログインする
    • \a メタコマンドでnoalign設定にする。
    • \o filename で出力結果をファイルに出力する。
    • SELECT name, setting, source, enumbals FROM pg_settings ORDER BY nameを実行する。
  • 前バージョン・新バージョン上で差分を取得し、diff等で差分をとってみる。

この方式だとdescriptionの差分は対象にならない。今回は追加されたパラメータ名や、設定値のデフォルトを対象に差分を見ていく。

PostgreSQL 9.6とPostgreSQL 10のパラメータ差分

パラメータ名 区分 変更内容
enable_gathermerge パラメータ追加 パラレルクエリ関連のパラメータ
hot_standby デフォルト値変更 off -> on
log_directory デフォルト値変更 'pg_log' -> 'log'
log_line_prefix デフォルト値変更 '' -> '%m [%p] '
max_logical_replication_workers パラメータ追加 デフォルト値は4
max_parallel_workers パラメータ追加 デフォルト値は8
max_parallel_workers_per_gather デフォルト値変更 0 -> 2
max_pred_locks_per_page パラメータ追加
max_pred_locks_per_relation パラメータ追加
max_replication_slots デフォル値値変更 0 -> 10
max_sync_workers_per_subscription パラメータ追加
max_wal_senders デフォルト値変更 0 -> 10
max_wal_size デフォルト値変更 64 -> 1024
min_parallel_relation_size パラメータ削除 min_parallel_index_scan_sizeとmin_parallel_table_scan_sizeに分離
min_parallel_index_scan_size パラメータ追加
min_parallel_table_scan_size パラメータ追加
min_wal_size デフォルト値変更 5 -> 80
password_encryption デフォルト値変更 on -> md5, 型もbooleanからenumに変更されている
sql_inheritance パラメータ削除
ssl_dh_params_file パラメータ追加
wal_consistency_checking パラメータ追加
wal_level デフォルト値変更 minimal -> replica

今回も新規機能の追加によって増えたパラメータや、パラメータの細分化により削除&追加されたものもあるが、デフォルト値変更も結構多い。
特徴としては、

  • パラレルクエリ
  • ストリーミングレプリケーション

に関するパラメータのデフォルト値が変更され、デフォルトのままでも上記の高度な機能を利用可能にしていることが挙げられる。

おわりに

今日はちょい手抜きです。たまにはそんな日があってもいいよね?

参考:該当するリリースノート

本エントリに関連するPostgreSQL 10リリースノートの記載です。

E.2.2. Migration to Version 10

  • Increase the size of the default DH parameters used for OpenSSL ephemeral DH ciphers to 2048 bits (Heikki Linnakangas)
  • Remove sql_inheritance server parameter (Robert Haas)

E.2.3.1.1. Parallel Queries

  • Add max_parallel_workers server parameter to limit the number of worker processes that can be used for query parallelism

E.2.3.1.3. Locking

  • Allow tuning of predicate lock promotion thresholds (Dagfinn Ilmari Mannsåker)

E.2.3.1.9.1. Write-Ahead Log (WAL)

  • Add wal_consistency_checking server parameter to add details to WAL that can be sanity-checked on the standby (Kuntal Ghosh, Robert Haas)

E.2.3.2. Replication and Recovery

  • Reduce configuration changes necessary to perform streaming backup and replication (Magnus Hagander, Dang Minh Huong)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4