設定パラメータの差分PostgreSQLPostgreSQL12はじめにいつものように、PostgreSQL新バージョンの差分先行調査の時期になりました。12の設定パラメータの差分を調べてみる。注意beta2およびbeta3(2019-08-08)版時点で再調査したが、まだbetaフェーズなので、RC/正式版リリース時には少し変更が入るかもしれない。11.2を使って、以下の操作を実行。postgresオプションのみ指定)を実行。生成されたデータベースクラスタを起動。postgresユーザでpostgresデータベースにログイン。psqlの\aメタコマンドを実行。psqlの\oオプションで出力ファイルを指定。pg_settingsを実行。12betaを用いて同じ操作を実行。12betaの結果をdiffる。12-develは312行。結構な差分があるようだ。例によって生成されたデータベースクラスタパスに依存する値や、バージョン番号に依存する値、configureオプション(--enable-debug/--enable-cassert)による差、設定ファイル内の行数差、説明文のみの変更などは差分としてはカウントしない。リスタートポイントで実行できるコマンドを指定出来るようになった。新しいテーブルのデフォルトのテーブルアクセス方法を設定する。デフォルトはheap。作成したテーブルへのoid列追加有無ののデフォルト指定がなくなった。値域からnoneが消え、posix,sysv,mmapのみとなった。設定値が0から1へ変更。0指定時にlog_statement_sample_rateという新パラメータの挙動に影響するっぽい。log_min_duration_statementの閾値を超えたログの出力レートを指定するものっぽい。0は全くログを出さない。閾値を低く設定したときのログ出力量を抑えるのに有効そう。13develにもない。トランザクションの一部からすべてのステートメントをログに記録します。PREPARE文のプランとしてカスタム化されたものあるいは汎用的なものをのうち、より良いプランで上書きする?という指定っぽい。リカバリ完了時に何かをしたいコマンドの指定がここで出来るようになったのか。共有メモリ方式を指定可能になった。値域はsysvとmmap。SSL処理を行うライブラリが指定可能になったのかな。TCPのタイムアウト指定?0だとシステム(OS)規定の値が使われる。型がstringからenumに変更。uncommitted"。型がintegerからrealに変更。小数点を含む指定が可能になったようだ・・・けど、そんな細かいチューニングする人っているのかしらん。最初に使用する前に、新しいWALファイルにゼロを書き込む。WALファイルの名前を変更してリサイクルする。11をざっと比較してみた。大きい話としては、JIT機能がデフォルトで有効になった。リカバリ周りのパラメータがpostgresql.confに統合された。ベータ版の時点でこの辺も変わるだろうし、正式版まではあと半年以上あるので、正式版でどこまで変わったので、RC版が出た時点で再確認したほうが良さげ。ついてはbeta2までは残っていたがbeta3で消えた。