Postgresqlバックエンド(バージョン9.3.10)の一時ファイルの作成場所を設定することは可能ですか?
これが私のシナリオです:私のPostgresql DBは専用のVM Ubuntu 14.04 OSにあります。私のVMには200GBの一時的な高性能SSDストレージが付属しています 提供 インフラストラクチャプロバイダーによって提供され、アプリケーションおよびプロセスの短期ストレージ用です。これは次のようになります。
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 221G 9.9G 200G 5% /mnt
ディスク容量が足りなくなって、一時ファイルの作成が原因でディスクがいっぱいになる可能性がある いくつかの分析クエリ を実行する必要があります。
より多くのスペースを解放するためのログエントリの削除やtemp_file_limit
postgresql confでは、一時ファイルの場所を設定できるかどうかも知りたいです。結局のところ、私はこれらの種類のシナリオで220GBを使用できるので、それらを有効に利用したいのです(スワップスペースもここで設定されます)。
私は初心者のDBAなので、これを設定する方法の実例は非常に役立ちます。
として マニュアルに記載 Postgresは$PGDATA/base/pgsql_tmp
に一時ファイルを作成します。
そのディレクトリを/mnt
を指すシンボリックリンクにしても安全です。
試してください:
ln -s /mnt/pgsql_tmp $PGDATA/base/pgsql_tmp
chown -R postgres /mnt/pgsql_tmp
chmod o+x /mnt
A_horse_with_no_nameのソリューションには大きな問題があります。 PostgreSQLのすべてのインスタンスに$ PGDATA/base/pgsql_tmpがあるわけではありません。そのパス全体が実際にそれらのインスタンスで必要に応じて作成されるためです。必要になるまで存在せず、不要になると破棄されるため、存在しないパス全体にシンボリックリンクを作成できず、動的に作成されて破棄されます。 temp_tablespacesパラメータを使用してpostgresql.confファイルの一時テーブルスペースの場所を設定する必要があります( https://www.postgresql.org/docs/9.3/static/runtime-config-client.html#GUC-TEMP -TABLESPACES )。これは、temp_tablespaceパラメータが、作成時に明示的なテーブルスペースが指定されていないCREATEコマンドによって作成されたすべての一時テーブルの場所を指定するだけでなく、結合、並べ替えに使用されるすべての一時ファイルの場所も指定するためです。およびその他のオーバーヘッド処理( https://www.postgresql.org/message-id/490ABE1D.3060700%40deriva.de )。