PostgreSQLデータベースのパフォーマンスは、次のいずれかの方法で改善できます。
次の2つのパラメータは、自動回収操作を制御し、Sentinel Rapid Deploymentサーバのインストール時にはデフォルトでコメントアウトされているので、コメントアウトを解除して値を設定する必要があります。
vacuum_cost_delay: コスト制限を超過した場合にプロセスがスリープする期間を決定します。この値は、たとえば100に設定できます。
vacuum_cost_limit: 回収プロセスがスリープするまでの累積コストを決定します。この値は、たとえば10000に設定できます。
これらのパラメータ値をゼロ以外の値に設定すると、回収と分析命令が一般的なデータベースの動作に対して与えるI/Oの影響を低減できます。回収は以前よりも時間がかかるので、レポートの実行時には、パフォーマンスへの影響としては取るに足らない程度である可能性があります。
デフォルトでは、autovacuumプロセスがtrueに設定されており、ディスク領域を回復しプランナーの統計情報を更新するために定期的に実行されます。データベースのサイズが増加すると、autovacuumはすべてのデータベースオブジェクトを維持できなくなります。そのような場合、パフォーマンスが遅いのであれば、cronジョブとしてAnalyzePartitions.shスクリプトを実行します。このcronジョブは、Sentinel Rapid Deploymentのプロセスを所有するユーザが設定する必要があります。
例:
30 11 * * * $ESEC_HOME/bin/AnalyzePartitions.sh
各要素の内容は次のとおりです。
30は時間(分単位)です。
11は時間(時単位)です。
ESEC_HOMEはデータベースの絶対パスです。
この例では、スクリプトは毎日11:30に実行されます。
レポート作成中にアーカイブが実行されないようにスケジュールしてください。両方のプロセスを一緒にスケジュールすると、PostgreSQLのバグのためにレポート作成が待ち状態になり、アーカイブジョブの完了後にデータの処理を開始します。この変更は、データベースのパフォーマンスに影響を与えます。