LoginSignup
14
4

More than 3 years have passed since last update.

PostgreSQL 12がやってくる!(2) - 設定パラメータの差分

Last updated at Posted at 2019-04-02

はじめに

いつものように、PostgreSQL新バージョンの差分先行調査の時期になりました。
ということで、今回はPostgreSQL 11とPostgreSQL 12の設定パラメータの差分を調べてみる。

注意

beta2およびbeta3(2019-08-08)版時点で再調査したが、まだbetaフェーズなので、RC/正式版リリース時には少し変更が入るかもしれない。

調査方法

  • PostgreSQL 11.2を使って、以下の操作を実行。
    • initdb(-Dオプションと-U postgresオプションのみ指定)を実行。
    • 生成されたデータベースクラスタを起動。
    • postgresユーザでpostgresデータベースにログイン。
    • psqlの\aメタコマンドを実行。
    • psqlの\oオプションで出力ファイルを指定。
    • SELECT * FROM pg_settingsを実行。
  • PostgreSQL 12betaを用いて同じ操作を実行。
  • 生成されたPostgreSQL 11の結果とPostgreSQL 12betaの結果をdiffる。

調査結果

行数

wcコマンドの結果を見ると、PostgreSQL 11は292行、PostgreSQL 12-develは312行。結構な差分があるようだ。

差分

例によって生成されたデータベースクラスタパスに依存する値や、バージョン番号に依存する値、configureオプション(--enable-debug/--enable-cassert)による差、設定ファイル内の行数差、説明文のみの変更などは差分としてはカウントしない。

パラメータ名 差分種別 差分概要
archive_cleanup_command 追加 リスタートポイントで実行できるコマンドを指定出来るようになった。
autovacuum_vacuum_cost_delay 変更 設定値が20から2に変更
default_table_access_method 追加 新しいテーブルのデフォルトのテーブルアクセス方法を設定する。デフォルトはheap。
beta3から追加?
default_with_oids 削除 作成したテーブルへのoid列追加有無ののデフォルト指定がなくなった。
dynamic_shared_memory_type 変更 値域からnoneが消え、posix,sysv,mmapのみとなった。
extra_float_digits 変更 設定値が0から1へ変更。real, double precision, geometricデータ型の出力がより正確なモードになる
jit 変更 デフォルト値がon(有効)になった!
log_min_duration_statement 変更 0指定時にlog_statement_sample_rateという新パラメータの挙動に影響するっぽい。
log_statement_sample_rate 追加→無効 log_min_duration_statementの閾値を超えたログの出力レートを指定するものっぽい。0は全くログを出さない。1は全ログを出す。閾値を低く設定したときのログ出力量を抑えるのに有効そう。
beta2までは残っていたが、beta3で消えた!
(参考) 13develにもない。
log_transaction_sample_rate 追加 トランザクションの一部からすべてのステートメントをログに記録します。 0.0(ログを記録しない)〜1.0の値を使用する
plan_cache_mode 追加 PREPARE文のプランとしてカスタム化されたものあるいは汎用的なものをのうち、より良いプランで上書きする?という指定っぽい。
primary_conninfo 追加 おや、recovery.confで見たことのあるような設定が・・・
primary_slot_name 追加 リカバリ時のslot指定
promote_trigger_file 追加 promote時に参照されるトリガファイル名を指定できるようになったのかな?
recovery_end_command 追加 リカバリ完了時に何かをしたいコマンドの指定がここで出来るようになったのか。
recovery_min_apply_delay 追加 遅延リカバリ周りの設定がこっちに移動したっぽい
recovery_target 追加 リカバリ周りの設定が(以下略
recovery_target_action 追加 リカバリ周りの設定が(以下略
recovery_target_inclusive 追加 リカバリ周りの設定が(以下略
recovery_target_lsn 追加 リカバリ周りの設定が(以下略
recovery_target_name 追加 リカバリ周りの設定が(以下略
recovery_target_time 追加 リカバリ周りの設定が(以下略
recovery_target_timeline 追加 リカバリ周りの設定が(以下略
recovery_target_xid 追加 リカバリ周りの設定が(以下略
restore_command 追加 リカバリ周りの設定が(以下略
shared_memory_type 追加 共有メモリ方式を指定可能になった。値域はsysvとmmap。デフォルトはmmapぽい
ssl_library 追加 SSL処理を行うライブラリが指定可能になったのかな。
ssl_max_protocol_version 追加 SSLの対応バージョンに関する指定?
ssl_min_protocol_version 追加 SSLの対応バージョンに関する指定?
tcp_user_timeout 追加 TCPのタイムアウト指定?0だとシステム(OS)規定の値が使われる。
transaction_isolation 変更 型がstringからenumに変更。値域はserializable,"repeatable read","read committed","read uncommitted"。デフォルト値は"read committed"
vacuum_cost_delay 変更 型がintegerからrealに変更。小数点を含む指定が可能になったようだ・・・けど、そんな細かいチューニングする人っているのかしらん。
wal_init_zero 追加 最初に使用する前に、新しいWALファイルにゼロを書き込む。デフォルトはon?
beta2から追加?
wal_recycle 追加 WALファイルの名前を変更してリサイクルする。
beta2から追加?
wal_sender_timeout 変更 contextがsighupからuserへ変更

おわりに

ということで、現時点の版とPostgreSQL 11をざっと比較してみた。
大きい話としては、

  • JIT機能がデフォルトで有効になった。
  • リカバリ周りのパラメータがpostgresql.confに統合された。

というあたりだろうか。もちろん、ベータ版の時点でこの辺も変わるだろうし、正式版まではあと半年以上あるので、正式版でどこまで変わったので、RC版が出た時点で再確認したほうが良さげ。

beta2/beta3での変更点(追記)

  • default_table_access_method の追加(beta2)
  • wal_init_zero の追加(beta2)
  • wal_recycle の追加(beta2)
  • log_statement_sample_rate についてはbeta2までは残っていたがbeta3で消えた。(beta3)
14
4
1

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
14
4