replacement_sort_tuples Deprecated

タイプ: integer
デフォルト: 150000
分: 0
最大: 2147483647
コンテキスト: user
再起動: false
以来: 9.6
廃止予定: 10

ソート対象のタプル数がこの指定値よりも小さい場合、クイックソートではなく、置換選択法を使ってソート処理の最初のラン出力を作ります。メモリが限られた環境で、物理から論理への強い相関性を持つタプルが大量のソート処理に投入される場合に有用かもしれません。なお、入力タプルが相関性を示す場合にはこの限りではありません。デフォルトの戦略が多数のランを実行してしまい、その結果を最後にマージしなければならないのと違って、置換選択アルゴリズムにおいては、マージを必要としない一つの長いランを実行できる可能性があります。このことにより、ソート処理を素早く完了できるかもしれません。

デフォルト値は150,000タプルです。多くの場合、より高い設定値がより良い効率をもたらすどころか、むしろ非生産的かもしれません。なぜなら、優先度キューは、利用可能なCPUキャッシュの大きさに敏感な一方、デフォルトのソート戦略はキャッシュに縛られない(cache-oblivious)アルゴリズムを使用して実行されるからです。この性質により、デフォルトのソート戦略では自動的かつ透過的に利用可能なCPUキャッシュを有効に利用できます。

maintenance_work_memをデフォルト値に設定すると、入力タプルの幅が非常に大きい場合を除き、通常ユーティリティコマンドが外部ソート(たとえば、CREATE INDEXがB-Treeインデックスを作成するために行うソート)が置換選択アルゴリズムを使うことはなくなります。

推奨事項 [EN]

Disable, this setting will be removed from Postgres 11.

件のコメント