Skip Navigation
Show nav
Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • ドキュメント
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
View categories

Categories

  • Heroku のアーキテクチャ
    • Dyno (アプリコンテナ)
      • Dyno Management
      • Dyno Concepts
      • Dyno Behavior
      • Dyno Reference
      • Dyno Troubleshooting
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • Developer Tools
    • コマンドライン
    • Heroku VS Code Extension
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリーとインテグレーション
    • 継続的統合
  • 言語サポート
    • Node.js
      • Working with Node.js
      • Node.js Behavior in Heroku
      • Troubleshooting Node.js Apps
    • Ruby
      • Rails のサポート
      • Bundler の使用
      • Working with Ruby
      • Ruby Behavior in Heroku
      • Troubleshooting Ruby Apps
    • Python
      • Working with Python
      • Python でのバックグランドジョブ
      • Python Behavior in Heroku
      • Django の使用
    • Java
      • Java Behavior in Heroku
      • Working with Java
      • Maven の使用
      • Spring Boot の使用
      • Troubleshooting Java Apps
    • PHP
      • PHP Behavior in Heroku
      • Working with PHP
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres スターターガイド
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
      • Migrating to Heroku Postgres
    • Heroku Data For Redis
    • Apache Kafka on Heroku
    • その他のデータストア
  • AI
    • Working with AI
    • Heroku Inference
      • Inference API
      • Quick Start Guides
      • AI Models
      • Inference Essentials
    • Vector Database
    • Model Context Protocol
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
      • シングルサインオン (SSO)
    • Private Space
      • インフラストラクチャネットワーキング
    • コンプライアンス
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Salesforce とのインテグレーション
  • データベースとデータ管理
  • Heroku Postgres
  • Postgres の基礎
  • 適切な Heroku Postgres プランの選択

適切な Heroku Postgres プランの選択

日本語 — Switch to English

この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。

最終更新日 2024年05月31日(金)

Table of Contents

  • プランの層
  • Essential 層
  • Standard 層
  • Premium 層
  • Private および Shield 層
  • キャッシュサイズ
  • Heroku Postgres プランの変更

Heroku Postgres​ には、個人的なブログから大きなデータセット、高トランザクションアプリケーションまでの各種サイズのユースケースを処理するためのさまざまなプランが用意されています。適切なプランの選択は、そのアプリの固有の使用特性 (可用性や稼働時間に対する要件など) によって異なります。

プランの層

Heroku Postgres の多くのプラン​は、 次の 5 つの高レベルの層​に分類されます。各層の主な違いは、その層で許容されるデータベースの毎月のダウンタイムの量です。5 つの層は次のとおりです。

  • Essential 層​ — 1 か月あたり最大 4 時間のダウンタイムを許容できるアプリ向け
  • Standard 層​ — 1 か月あたり最大 1 時間のダウンタイムを許容できるアプリ向け
  • Premium 層​ — 1 か月あたり最大 15 分のダウンタイムを許容できるアプリ向け
  • Private 層​ — Heroku Enterprise​ のお客様向け
  • Shield 層​ — コンプライアンスに対応したデータベースが必要な Heroku Enterprise​ のお客様向け

各層の違いの内訳を次に示します。

Heroku Postgres の層 ダウンタイムの許容範囲 フォーク フォロー ロールバック HA ディスクの暗号化
Essential 1 か月あたり 4 時間未満のダウンタイム なし なし なし なし あり
Standard 1 か月あたり 1 時間未満のダウンタイム あり あり 4 日間 なし あり
Premium 1 か月あたり 15 分未満のダウンタイム あり あり 1 週間 あり あり
Private 1 か月あたり 15 分未満のダウンタイム あり あり 1 週間 あり あり
Shield 1 か月あたり 15 分未満のダウンタイム あり あり 1 週間 あり あり

ダウンタイムの許容範囲は 30 日の月に基づいています。

共有される機能

Heroku Postgres プランのすべての層で次の機能が共有されます。

  • 自動ヘルスチェックによって完全に管理されたデータベースサービス
  • 60 秒ごとのログ先行書き込み (WAL) オフプレミスストレージ (重大な障害が発生した場合のデータ損失が最小限に抑えられる)
  • PG バックアップ​を使用した日次論理データベースバックアップ (無料のオプション)
  • データクリップ​ (データやクエリの簡単かつ安全な共有のため)
  • SSL で保護された psql/libpq アクセス
  • 変更されていない PostgreSQL 13、14、15、16 の実行

Essential-0、Essential-1、Essential-2 プランは PostgreSQL のバージョン 14、15、16 をサポートしています。

  • Postgres 拡張機能
  • フル機能を備えた Web UI
  • ディスクに書き込まれたすべてのデータを自動で保存時暗号化

データクリップと日次論理バックアップは、Shield 層のデータベースプランでは使用できません。

Essential 層

Essential 層には essential-0​、essential-1​、essential-2​、mini​、basic​ のプラン​が含まれています。この層には以下の制限があります。

  • フォーク/フォロー​のサポートなし: レプリカデータベースやリーダー/フォロワー設定を作成するために使用されるフォークとフォローはサポートされません。
  • 高コストのクエリ​のサポートなし
  • 月ごとに 99.5% の予測される稼働時間
  • 予告なしのメンテナンスおよび Postgres バージョンの自動アップグレード
  • Postgres ログなし
  • 追加の資格情報なし

Essential 層​の各プランは次のとおりです。

Heroku Postgres mini​ と basic​ プランがサポート終了 (EOL) に達しました​。mini​ も basic​ アドオンもプロビジョニングできなくなりました。mini​ と basic​ データベースも新規の Essential 層プラン​に移行しています。詳細は、「Mini and Basic Deprecation Details​」 (Mini および Basic 非推奨の詳細) を参照してください。

プラン名 プロビジョニング名 制限 ディスクサイズ 接続制限 ステータス
Essential-0 heroku-postgresql:essential-0​ 4,000 テーブル 1GB 20 使用可能
Essential-1 heroku-postgresql:essential-1​ 4,000 テーブル 10GB 20 使用可能
Essential-2 heroku-postgresql:essential-2​ 4,000 テーブル 32GB 40 使用可能
Mini heroku-postgresql:mini​ 10,000 行 1GB 20 EOL​
Basic heroku-postgresql:basic​ 10,000,000 行 10GB 20 EOL

Mini および Basic の非推奨の詳細

Heroku Postgres mini と Basic プランがサポート終了 (EOL) に達しました​。すべての mini データベースと Basic データベースの廃止と移行のスケジュールは次のとおりですが、今後変更される場合があります。

  • 2024 年 5 月 29 日: ​mini​ と basic​ プランが EOL に達します。
    • mini​ および basic​ のデータベースを作成できません。既存の mini​ および basic​ のデータベースは引き続き使用できます。
    • mini​ プランを essential-0​ に、basic​ プランを essential-1​ に移行し始めます。移行の開始時と終了時にメール通知が送信されます。移行には約 15 分かかります。mini​ および basic​ のデータベースが PostgreSQL バージョン 12 または 13 を使用している場合、essential-*​ データベースへの移行によって、そのバージョンも 14 にアップグレードされます。
  • 2024 年 7 月 31 日: データベースアクセスの制限を開始し、この日までに移行されていない mini​ および basic​ のデータベースを削除します。移行されていないデータベースがまだある場合は、メール通知が送信されます。

mini​ と basic​ データベースも addons:upgrade​ によって新規 Essential 層プランに移行できます。mini​ および basic​ データベースが PostgreSQL バージョン 12 または 13 を使用している場合、データベースへの移行によって、PostgreSQL のバージョンも 14 にアップグレードされます。

レビューアプリ​や CI アプリ​が app.json 内で mini​ または basic​ のデータベースを使用している場合、それらを新しい Essential 層プランに更新する必要があります。

プランの制限の適用

プランの制限は次のメカニズムで適用されます。

  1. Essential データベースが使用制限の 90% に達すると、所有者に警告メールが送信されます。
  2. データベースがプランの制限を超えると、所有者に追加の通知が送信されます。この時点で、データベースには制限に準拠するか別のプランに移行する​ための 7 日間の猶予期間が与えられます。データベースがプラン上限の 200% を超えた場合は、猶予期間をスキップし、直ちにアクセスが取り消されます。
  3. 7 日後にもデータベースがプランの制限を超過しているか、プランの制限の 200% を超えている場合、INSERT と UPDATE の権限を取り消し、データベースへの接続数を 1 に制限します。データベースのデータの読み取り、更新、削除は引き続き実行できるため、データベースを準拠状態になるようにして、データへのアクセスを維持できます。
  4. さらに 7 日経過してもデータベースが依然としてプランの制限に違反している場合は、データベースへのアクセスが取り消されます。データベースへのアクセスを回復するためには、所有者はサポートチケット​を作成する必要があります​。
  5. 使用量がプランの制限に準拠するようになると、データベースの権限と接続が自動的に復元されます。権限の復元には時間がかかることがあります。
  6. サポートチケットでの連絡がなく、使用量がプランの制限を超えている状態が続く場合は、ポリシー​に準拠していないことを根拠にデータベースに削除のフラグが付けられます。

Standard 層

Standard 層は、1 か月あたり最大 1 時間のダウンタイムを許容するアプリケーション向けに設計されています。すべての Standard 層データベースには、以下のものが含まれます。

  • 行数制限なし
  • インメモリキャッシュの段階的な拡張
  • フォークとフォロー​のサポート
  • 最大 4 日間のロールバック​
  • データベースメトリクス​をさらに分析するためのアプリケーションログストリームへの公開
  • 中断時の優先サービスの復元
  • 資格情報管理

Standard 層​の各プランは次のとおりです。

プラン名 プロビジョニング名 RAM サイズ ディスクサイズ 接続制限
Standard-0 heroku-postgresql:standard-0​ 4GB 64GB 120
Standard-2 heroku-postgresql:standard-2​ 8GB 256GB 400
Standard-3 heroku-postgresql:standard-3​ 15GB 512GB 500
Standard-4 heroku-postgresql:standard-4​ 30GB 768GB 500
Standard-5 heroku-postgresql:standard-5​ 61GB 1TB 500
Standard-6 heroku-postgresql:standard-6​ 122GB 1.5TB 500
Standard-7 heroku-postgresql:standard-7​ 244GB 2TB 500
Standard-8 heroku-postgresql:standard-8​ 488GB 3TB 500
Standard-9 heroku-postgresql:standard-9​ 768GB 4TB 500
Standard-10 heroku-postgresql:standard-10​ 1TB 8TB 500

Premium 層

Premium 層は、1 か月あたり最大 15 分のダウンタイムを許容するアプリケーション向けに設計されています。すべての Premium 層データベースには、以下のものが含まれます。

  • 行数制限なし
  • インメモリキャッシュの段階的な拡張
  • フォークとフォロー​のサポート
  • 最大 7 日間のロールバック​
  • データベースメトリクス​をさらに分析するためのアプリケーションログストリームへの公開
  • 中断時の優先サービスの復元
  • 資格情報管理

Premium 層​の各プランは次のとおりです。

プラン名 プロビジョニング名 RAM サイズ ディスクサイズ 接続制限
Premium-0 heroku-postgresql:premium-0​ 4GB 64GB 120
Premium-2 heroku-postgresql:premium-2​ 8GB 256GB 400
Premium-3 heroku-postgresql:premium-3​ 15GB 512GB 500
Premium-4 heroku-postgresql:premium-4​ 30GB 768GB 500
Premium-5 heroku-postgresql:premium-5​ 61GB 1TB 500
Premium-6 heroku-postgresql:premium-6​ 122GB 1.5TB 500
Premium-L-6 heroku-postgresql:premium-l-6​ 122GB 2TB 500
Premium-XL-6 heroku-postgresql:premium-xl-6​ 122GB 3TB 500
Premium-7 heroku-postgresql:premium-7​ 244GB 2TB 500
Premium-8 heroku-postgresql:premium-8​ 488GB 3TB 500
Premium-9 heroku-postgresql:premium-9​ 768GB 4TB 500
Premium-L-9 heroku-postgresql:premium-l-9​ 768GB 5TB 500
Premium-XL-9 heroku-postgresql:premium-xl-9​ 768GB 6TB 500
Premium-10 heroku-postgresql:premium-10​ 1TB 8TB 500

Private および Shield 層

Heroku は、Heroku Enterprise​ のお客様に Private Spaces​ 内の Heroku Postgres を提供します。さらに、コンプライアンスに対応したデータベースが必要なお客様は Postgres Shield プランをご使用いただけます。Private および Shield プランについての詳細は、Heroku Postgres および Private Spaces​ の記事を参照してください。

キャッシュサイズ

Essential 層でないデータベース​の場合、RAM サイズは、基礎となるインスタンスのハードウェア上のシステムメモリの合計量を示します。このほとんどは、Postgres に割り当てられ、キャッシングに使用されます。少量の RAM は接続やその他のタスクの管理に使用されますが、Postgres では、この RAM のほぼすべてがそのキャッシュのために利用されます。キャッシュの詳細な機能については、この記事​を参照してください。

Postgres は、書き込まれた行、作成されたインデックス、Postgres が保持しているメタデータなどのデータのキャッシュを常に管理しています。クエリに必要なデータがキャッシュ内に完全に含まれている場合、パフォーマンスは高速です。キャッシュされたデータから作成されたクエリは多くの場合、完全なデータセットから作成されたクエリに比べて 100 ~ 1000 倍高速です。

適切に設計された高性能な Web アプリケーションから処理されるクエリの 99% 以上はキャッシュから処理されます。

逆に、ディスクへのフォールバックが必要になると、少なくとも 1 桁低速になります。さらに、大きなデータ型 (大きなテキスト列など) を含む列は TOAST​ を使用して行の外で保存されるため、TOAST 化された大量のデータへのアクセスは低速になる場合があります。

一般的なガイドライン

アクセスパターンは、アプリケーションごとに大きく異なります。多くのアプリケーションは、そのデータ全体の中の小さな、最近変更された部分にのみアクセスします。Postgres は、時間が経過しても常にその部分をキャッシュ内に保持できるため、これらのアプリケーションは小さめのプランでは適切に実行できます。

すべての​データに頻繁にアクセスするアプリケーションにこの好条件はありません。これらのアプリでは、そのデータセット全体が確実にメモリに収まるようにすることにより、パフォーマンスを大幅に向上させることができます。データセットの合計サイズを確認するには、heroku pg:info​ コマンドを使用し、Data Size​ 行を探します。

$ heroku pg:info
=== HEROKU_POSTGRESQL_CHARCOAL_URL (DATABASE_URL)
Plan:        Standard 0
Status:      Available
Data Size:   9.4 MB
...

大まかな尺度ではありますが、合計のデータセットのサイズと少なくとも同じ量のインメモリキャッシュを使用できるプランを選択すると、高いキャッシュ比率が確保されます。ただし、最終的には最大のプランよりデータ量が多くなるポイントに達するため、シャードすることが必要になります。シャーディングを前もって計画してください。シャーディング方式の実行には長い時間がかかります。

必要なキャッシュサイズの特定

適切なキャッシュサイズを特定するには、本番稼働トラフィックでのアプリケーションのデータベース要求を観察することが最適です。理想的には、キャッシュヒット率は 99% 以上の範囲に入ります。一般的でないクエリには 100 ミリ秒未満が、一般的なクエリには 10 ミリ秒未満が必要です。

このブログ投稿 には、Postgres のパフォーマンスの問題や手法のより詳細な説明が含まれています。

テーブルのキャッシュヒット率を測定するには、次のようにします。

SELECT
    'cache hit rate' AS name,
     sum(heap_blks_hit) / (sum(heap_blks_hit) + sum(heap_blks_read)) AS ratio
FROM pg_statio_user_tables;

インデックスのキャッシュヒット率の場合は、次のようにします。

SELECT
    'index hit rate' AS name,
    (sum(idx_blks_hit)) / sum(idx_blks_hit + idx_blks_read) AS ratio
FROM pg_statio_user_indexes

pg extras プラグイン​をインストールした後、 heroku pg:cache-hit を実行するだけです。

どちらのクエリも 0.99​ に近い ratio​ を示します。

heap_read | heap_hit |         ratio
-----------+----------+------------------------
       171 |   503551 | 0.99966041175571094090

キャッシュヒット率が低下し始めたら、一般には、データベースのアップグレードによりこの比率が 99% に戻ります。

Heroku Postgres プランの変更

データベースのプランは作成後に変更できます。プランを変更するオプションの詳細については、こちら​を参照してください。

関連カテゴリー

  • Postgres の基礎

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure
  • .NET

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing
  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Github
  • LinkedIn
  • © 2025 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
  • heroku.com
  • Legal
  • Terms of Service
  • Privacy Information
  • Responsible Disclosure
  • Trust
  • Contact
  • Cookie Preferences
  • Your Privacy Choices