PostgreSQL 11即将到来!(1) – 参数的差异

首先

喵。

因为在5/24发布了PostgreSQL 11的beta1版本,所以我决定立即开始调查一下关于PostgreSQL 11的内容。

虽然有很多令人关注的功能添加,但首先我们来看一下PostgreSQL的配置参数的差异。

简要说明

以下是 PostgreSQL 10 和 PostgreSQL 11 参数差异的概要。

種別個数PostgreSQL 11で追加されたパラメータ21PostgreSQL 11で変更されたパラメータ1PostgreSQL 11で削除されたパラメータ1

由于仍处于beta1阶段,所以未来可能会有更多的变更,不过大部分似乎是增加参数。

在 PostgreSQL 11 中新增的参数。

パラメータ名メモdata_directory_modeUnix系システムでのデータディレクトリの権限。この設定値はinitdb時に --allow-group-accessで指定する。
従来は 700 の権限でなければならなかった。enable_parallel_append11からparalell appendが対応するっぽい?
デフォルトはon。
これをoffにしたほうが実行時間が短くなるケースもあるのだろうなあ。enable_parallel_hashこっちはparalell hash joinの有効/無効のフラグ。
デフォルトはon。
enable_hash_joinが無効だと、もちろんこいつも無効。enable_partition_pruningこれが有効だと、実行計画生成時点で検索対象外となるパーティションを除外するのかな。
デフォルトはon。enable_partitionwise_aggregateパーティション単位のグループ化・集計を有効または無効にする。
デフォルトはoff。
これをonにすると実行計画生成時にCPUとメモリを結構喰うからデフォルトはoffになってるぽい。enable_partitionwise_joinパーティション単位の結合を有効または無効にする。
デフォルトはoff。
有効なケースが結構限定されてて、かつ、これをonにすると実行計画生成時にCPUとメモリを結構喰うからデフォルトはoffになってるぽい。jitJIT(Just-in-Time Compilation)をPostgreSQLで使用するかどうかのフラグ。デフォルトはon。jit_above_costJITコンパイルを使うかどうかの閾値?
なんとなく、JITコンパイルは時間がかかるけど、それを使ったクエリは高速に実行できるのだと思うので、ここのパラメータ調整が肝になるのかなあ?
デフォルトは100000。この数値の単位ってなんだろ?jit_debugging_supportPostgreSQL開発者向けオプション。
これをonにすると、JITコンパイルで生成された関数をgdbに登録できるっぽい。
デフォルトはoff。jit_dump_bitcodePostgreSQL開発者向けオプション。
JITコンパイルで生成されたコードをファイルにダンプしてくれるものかな?
デフォルトはoff。jit_expressionsPostgreSQL開発者向けオプション。
コスト計算の対象となる式をJITコンパイルするかどうかを決定します・・・とGoogle翻訳先生は言ってるが、正直、意味がよくわからぬ。
デフォルトはon。jit_inline_above_costJITコンパイルされたコードのインライン化に関するパラメータ?
デフォルトは500000。jit_optimize_above_costjit_above_costとセットで調整するものっぽい?
デフォルトは500000。jit_profiling_supportPostgreSQL開発者向けオプション。
JITによって生成されたperf to profile関数を許可するために必要なデータを出力する。
Perf解析も見据えたオプションがあるのなあ。jit_providerどのJITプロバイダを使用するか指定する。
デフォルトはllvmjit。jit_tuple_deformingPostgreSQL開発者向けオプション。
コスト計算の決定に従い、タプル変形がJITコンパイルされるかどうかを決定する。
デフォルト値はon。
タプル変形(tuple deforming)ってなんだろう・・・?max_parallel_maintenance_workers1つのユーティリティコマンドから起動できる並列ワーカー数の最大値。
現状(PostgreSQL 11)では、btreeインデックス指定時のCREATE INDEXコマンドのみ対応している。
デフォルトは2。parallel_leader_participationリーダープロセスがワーカープロセスを待つのではなく、ギャザーとギャザーマージノードでクエリプランを実行できるようにします。
デフォルトはon。
これのon/offで性能差がどのくらい出るんだろうなあ・・・。ssl_passphrase_command非公開鍵などのSSLファイルを解読するためのパスフレーズを取得する必要がある場合に呼び出される外部コマンドを設定する。普通は使う必要はないっぽい。
デフォルトは空文字列。ssl_passphrase_command_supports_reloadssl_passphrase_commandで設定されたパスフレーズコマンドをリロード(pg_ctl reloadのことかな?)中に呼び出すかどうかを指定する。
デフォルトはoff。vacuum_cleanup_index_scale_factorVACUUM時に、索引スキャンを実行せずに挿入できる、前の統計収集でカウントされたヒープ・タプルの合計数の割合を指定する。なるほど、わからん。
デフォルト値は0.1。

在PostgreSQL 11中更新的参数

パラメータ名メモwal_segment_size単位がブロック数ではなく、バイト数に変更された。
それにともない初期設定値が2048から16777216に変更された。

只需要一种选择,用中文表述以下内容:
在PostgreSQL 11中被删除的参数

パラメータ名メモreplacement_sort_tuplesリリースノートより。
” Replacement sorts were determined to be no longer useful.”
身も蓋もないw
まあ、自分もこのパラメータを有効に使ったことは一度もないが・・・。

最后

我大致查看了参数的差异,其中新功能的JIT和与并行查询增强相关的内容占据了大部分。

在一个数据库服务器上使用多个操作系统用户进行操作的情况下,能够更改数据库集群配置目录的权限是否有用呢?

请参阅

据我所知,喜田先生正在尝试有关JIT编译的内容。之后,我们要仔细看一下,可以参考这篇博文:http://kkida-galaxy.blogspot.jp/2018/04/postgresql11-with-jit-01.html。

广告
将在 10 秒后关闭
bannerAds