ティアに合わせたデータベースメモリの設定
VDS-1…VDS-6 向けの PostgreSQL と MySQL の具体的なバッファ値、データベース・アプリケーション・システム間でメモリを配分するルールについて説明します。
更新日 2026年8月23日
データベースのデフォルト設定は、どこでも起動できるように設計されており、高速に動作するようには設計されていません。メモリ 8 GB の VDS-3 では、PostgreSQL は初期状態でキャッシュに 128 MB しか使用しません。つまり、メモリから読み込めるはずのデータも、ほとんどをディスクから読み込んでしまいます。
メモリ配分のルール
ティアのメモリは、おおよそ次のように分割します。
- システムとサービスのプロセス — 10~15%
- アプリケーション(PHP-FPM、Node、gunicorn) — ワーカー数に応じて
- データベース — 残りすべて。ただし総メモリの 60~70% を超えないこと
データベースにメモリをすべて渡してはいけません。システムがスワップに陥り、NVMe でも助けにはなりません。レイテンシは数十倍に増加します。
現在の使用量を確認するには:
free -h
ps -eo pmem,rss,comm --sort=-rss | head
1 時間、1 日、1 週間、1 か月のメモリグラフは、パネルの /hosting/vds/m/<id> の「概要」で確認できます。現在の瞬間ではなく、実際のピークが表示されます。
PostgreSQL
/etc/postgresql/17/main/postgresql.conf:
| ティア | shared_buffers | effective_cache_size | work_mem | maintenance_work_mem | max_connections |
|---|---|---|---|---|---|
| VDS-1(2 GB) | 384MB | 1GB | 8MB | 96MB | 40 |
| VDS-2(4 GB) | 1GB | 2GB | 12MB | 256MB | 60 |
| VDS-3(8 GB) | 2GB | 5GB | 16MB | 512MB | 100 |
| VDS-4(16 GB) | 4GB | 10GB | 24MB | 1GB | 150 |
| VDS-5(24 GB) | 6GB | 16GB | 32MB | 2GB | 200 |
| VDS-6(32 GB) | 8GB | 22GB | 48MB | 2GB | 250 |
さらに、NVMe 向けの一般的な設定:
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem は接続ごとではなく、ソート操作ごとに割り当てられます。複雑なソートを伴う 100 件の並列クエリでは、数百倍に膨れ上がります。高く設定しすぎないでください。
適用:systemctl restart postgresql(shared_buffers の変更には特に再起動が必要です)。
MySQL と MariaDB
| ティア | innodb_buffer_pool_size | innodb_log_file_size | max_connections |
|---|---|---|---|
| VDS-1 | 512M | 128M | 60 |
| VDS-2 | 1G | 256M | 100 |
| VDS-3 | 3G | 512M | 150 |
| VDS-4 | 8G | 1G | 200 |
| VDS-5 | 12G | 1G | 250 |
| VDS-6 | 18G | 2G | 300 |
innodb_flush_method = O_DIRECT
innodb_flush_log_at_trx_commit = 1
innodb_io_capacity = 2000
バッファプールが主要なパラメータです。これが作業データセットに収まれば、ディスクの読み込みはほとんど発生しません。
効果の確認
SELECT sum(blks_hit)*100/sum(blks_hit+blks_read) FROM pg_stat_database;
MySQL では、SHOW ENGINE INNODB STATUS と、Innodb_buffer_pool_reads 対 Innodb_buffer_pool_read_requests の比率を確認します。キャッシュヒット率が 95% を下回る場合、データベースのメモリが不足しています。
よくある間違い
| 症状 | 原因 |
|---|---|
| 編集後にデータベースが起動しない | 利用可能なメモリを超える量を要求している — ジャーナルを確認してください |
| プロセスが OOM で強制終了された | データベース、アプリケーション、システムの合計がティアのメモリを超えている |
| 「最適化」後に遅くなった | work_mem が高すぎる設定になっており、マシンがスワップしている |
| ディスクの読み込みが絶えない | バッファが小さすぎて、作業セットが収まっていない |
メモリを調整してもなお限界に達する場合、問題は設定ではなくデータ量です。できるのはプランのアップグレードのみで、支払い済み期間の残り日数分は日割りで計算されます。ダウングレードはできないため、次のティアは慎重に選んでください。