# オンプレミス版\_PostgreSQL推奨設定

## **はじめに**

### **対象**

このマニュアルは、オンプレミス版 i-Reporterをご契約のお客様向けです。

### **概要**

ConMas i-Reporterシステムの、データーベース（PostgreSQL）のチューニングに関する資料です。\
帳票検索などのレスポンス改善を目的とした推奨設定を掲載しています。

## **設定ファイル**

### **ファイルの場所**

\[PostgreSQLデーター格納ディレクトリ]\postgersql.conf

### **変更方法**

上記のconfファイルをメモ帳でひらき、次ページ以降の内容で更新します。

{% hint style="warning" %}
【注意】\
変更前には、必ず postgressql.conf をコピーなどでバックアップしてください。
{% endhint %}

## **搭載メモリーについて**

* **APサーバー、DBサーバー同居型 の場合：**\
  　全メモリーの半分を搭載メモリーとする<br>
* **APサーバー、DBサーバー分離型 の場合：**\
  　全メモリーすべてを搭載メモリーとする

## **推奨設定**

* **shared\_buffers**\
  データベースが使用する共有メモリバッファの値を指定します。\
  推奨値：搭載メモリの 25%<br>
* **effective\_cache\_size**\
  設定値（データベースキャッシュに使用するメモリサイズ）が大きいと、インデックスを使用した検索が行われやすくなります。

  推奨値：搭載メモリーの1/4～1/2<br>
* **work\_mem**\
  ソート、テーブルJOINに使用するメモリ量です。\
  大きくするとメモリ使用量が増え、より高速なJOINソートが可能になります。\
  推奨値：「メモリ搭載量-shared\_buffers = work\_mem × 同時接続数（※）」<br>

  <div data-gb-custom-block data-tag="hint" data-style="success" class="hint hint-success"><p>【参考】<br>work_mem=10MBの時、100人が同時接続した場合10MB×100人=1000MB≒1GBとなり、最大で約1GB消費します。</p><p>※同時接続数とは<br>同時にサーバーへのアクセスが必要な操作（帳票保存や検索等）を行うユーザー数です。</p></div>

  \ <br>
* **random\_page\_cost**\
  この値を小さく設定すると、オプティマイザがインデックスを使用した問い合わせプランを選択する傾向が強くなります。\
  一般的にHDDの場合は2、SSDの場合は1にします。<br>
* **default\_statistics\_target**\
  PostgreSQLでは、特定のテーブルの特定のカラムごとに統計情報を取得する際の精度を指定することで、大きなテーブルでは荒くなりがちな統計情報の精度を調整することができるようになっています。\
  デフォルト値:100推奨値：1000（より精度を向上させるため）

## **適用方法**

postgreSQLサービスを再起動することで適用されます。

## **設定サンプル**

【前提】\
APサーバー、DBサーバー同居型\
メモリー：８GB\
ストレージ：HDD\
※同居型のため、搭載メモリーを４GBとして計算する

【設定サンプル】

* **shared\_buffers**\
  4G×25% = 1GB
* **effective\_cache\_size**\
  4G ×　1/2 = 2GB
* **work\_mem**\
  ※考えられる同時接続数を50で計算\
  4G – 1G = 50 × work\_mem\
  ≒50～60MB
* **random\_page\_cost**\
  HDDのため\
  \=2
* **default\_statistics\_target**\
  \=1000

PostgreSQL推奨設定 に関する手順は以上です。

## **定期的なAnalyze実行**

データベース内のテーブルの内容に関する統計情報を集計する処理を行います。

PostgreSQLでは統計情報を用いて効率のよい検索問い合わせを導き出しています。\
この統計情報が最新の状態で集計できていない場合、効率のよい検索問い合わせができないことがあります。

Analyze処理は自動で動作しますが、一度の大量の帳票を登録するなど、運用内容によって最新の状態で集計されにくくなるケースがあります。

以下のコマンドを実行することでi-reporterで変更、追加の多いテーブルを対象にAnalyzeを実行できます。\
定期的なAnalyze実行にご利用ください。

```
chcp 65001
SET PGPASSWORD=[PostgreSQLパスワードを入力してください。]
SET CURRENT_FOLDER=[本バッチファイルを配置したフォルダーパスを入力してください。]
echo analyze start > "%CURRENT_FOLDER%\analyze.log"
"[インストールドライブ]:\Program Files\PostgreSQL\[PostgreSQLバージョン]\bin\vacuumdb.exe" -U postgres -d irepodb  -Z -v
echo analyze result=%ERRORLEVEL% >> "%CURRENT_FOLDER%\analyze.log"
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://manuals.i-reporter.jp/server-construction-maintenance/maintenance/postgresql-recommended-settings.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
