Cloudflare D1料金計算|行読み取り・書き込み・保存量の見積もり

Cloudflare D1の行読み取り・書き込み・保存量を計算するイメージ ITスキル実務

確認日: 2026年8月28日
対象: Cloudflare D1の行読み取り・書き込み・保存量を使って月額を計算する人
注意: D1はWorkers FreeとPaidで枠の周期が違います。D1の料金にWorkers実行、ログ、他のストレージを混ぜず、Cloudflareダッシュボードの実測値で更新してください。

D1の料金はデータベースの容量だけで決まると思われがちです。実際には、行を何行読むか、何行書くか、何GB保存するかが中心です。しかも、クエリの結果が1行でも、インデックスがなければテーブルを大量に走査します。料金を出す前に、クエリごとのrows_readとrows_writtenを記録する。ここを省くと、容量を減らしても請求が下がらない理由を説明できません。

スポンサーリンク

D1の公式料金単位

項目 Workers Free Workers Paid 計算する値
行読み取り 500万行/日 250億行/月を含む。超過0.001ドル/100万行 クエリごとのrows_read合計
行書き込み 10万行/日 5,000万行/月を含む。超過1.00ドル/100万行 INSERT・UPDATE・DELETEなど
保存 合計5GB 5GBを含む。超過0.75ドル/GB月 データベース・テーブル・インデックス
データ転送 追加料金なし 追加料金なし WorkersのCPUや他サービスは別

公式ページは、D1がスケール・トゥ・ゼロで、クエリがなければD1のコンピュート時間を請求しないと説明しています。D1からのegressや帯域料金もありません。ただし、WorkerでSQLを実行し、JSON化し、レスポンスを返すCPU時間はWorkers料金の対象です。「D1は転送無料」を「アプリ全体が無料」と読み替えないようにします。

月額を計算する式

PaidのD1変動費は、max(行読み取り−25,000,000,000、0)÷1,000,000×0.001+max(行書き込み−50,000,000、0)÷1,000,000×1.00+max(保存GB−5、0)×0.75です。Workers Paidの基本5ドルはこの式の外側に置きます。Freeは日次枠を超えた時点でクエリが失敗するため、超過料金を掛ける方式ではありません。

具体例を計算します。1か月のrows_readが300億行、rows_writtenが8,000万行、保存量が8GBなら、読み取り超過は50億行です。50億÷100万×0.001=5ドル、書き込み超過は3,000万行で30ドル、保存超過は3GB×0.75=2.25ドルです。D1の変動費は5+30+2.25=37.25ドル、Workers Paidの最低5ドルを加えると42.25ドルが比較用の合計になります。税、他のWorkers機能、ログ、ドメインは含めません。

行数が少なくても、クエリの回数が多ければ読取行数は膨らみます。1回の検索が平均2,000行を読むAPIを1,000万回呼ぶと、2,000×1,000万=200億行です。検索結果が10行でも、WHERE条件に合うインデックスがなければ2,000行すべてを読む可能性があります。実測したrows_readを式へ入力します。

rows_readとインデックスを確認する

D1の公式FAQでは、クエリのレスポンスにmetaオブジェクトが返り、rows_read、rows_written、duration、size_afterを確認できると説明されています。ダッシュボードやAnalytics APIでも期間・データベースごとに利用量を追えます。まず上位クエリを並べ、rows_read÷返却行数が大きいものから改善します。

CREATE INDEXは書き込みと保存を増やしますが、検索時の読み取りを減らせることがあります。たとえば10万行のusersテーブルを、メールアドレスで1日1万回検索するケースで、インデックスなしなら1回10万行を読むため10億行/日です。インデックス後に平均1行だけ読むなら1万行/日です。インデックスの保存と作成時の書き込みを足しても、読み取り差が大きいなら費用と応答時間の両方が改善します。

ただし、すべての列へインデックスを付けるとよいわけではありません。更新が多い表では、書き込み行数と保存容量が増えます。クエリプランを確認し、利用頻度とデータ更新の比率でインデックスを選びます。

行書き込みとバッチ処理

トランザクションやバッチは、メッセージ数ではなく書き込まれた行数が料金へ入ります。1回の処理が1行のINSERTなら100万件で100万行ですが、同じ処理が親・子・監査ログの3表へ書くなら300万行です。UPDATEやDELETE、インデックス更新もアプリケーションの設計によって増えます。イベント数だけでD1の書き込みを予測しないことです。

月80万イベント、1イベント5行を書き込むなら、4,000万行です。Paidの5,000万行枠には収まりますが、再試行で2,000万行が追加されると6,000万行となり、超過1,000万行×1ドル=10ドルが加わります。失敗時の再試行、重複排除、Dead Letter相当の処理を別の行で数えます。

Freeで開発する場合、日次10万書き込みと500万読み取りの両方が上限です。負荷テストを本番データで行うと、読み取り枠をその日のうちに使い切ります。検証用データを小さくし、テストの時間帯を管理し、Paidへ切り替える条件を事前に決めます。

保存量と削除・バックアップ

Paidの5GBを超えた分はGB月単位です。テーブルだけでなく、インデックス、空のデータベース、スキーマ、Time Travel、バックアップ運用が保存量へ影響します。公式FAQでは、空のデータベースも約12KB、空のテーブルも数KBを消費すると説明されています。多数のデータベースを作れば容量がゼロになるわけではありません。

不要な行を削除すると、将来の保存量は下がりますが、削除クエリ自体が書き込みとして数えられます。D1のTime Travelやエクスポートを保持していると、アプリのデータを削除しても復元用データが残ることがあります。保存・削除・復元の期間を決め、削除要求に対応できる形式でエクスポートします。

Workersとの合算と契約停止

D1をWorkerから呼ぶ構成では、D1の行数・保存と、Workersのリクエスト・CPU時間が別計上です。1,500万リクエスト、平均CPU7msのWorkerなら、Workers公式例のとおりPaidのリクエスト・CPUで8ドルとなる計算があります。D1の42.25ドル例へその8ドルを単純に足す場合でも、ログ、KV、R2、ドメインはさらに別です。Workers Free・Paid比較既存Workers料金R2料金を同じアカウントの請求で照合します。

停止はWorkerのデプロイ解除だけでは終わりません。D1データベース、Time Travel、バインディング、Cron、Logpush、APIトークン、カスタムドメインを一覧化します。Freeへ戻すと日次制限が復活し、超過時にクエリがエラーになる可能性があります。必要なデータをエクスポートし、復元テストと権限削除を行ってからプランを変更します。

データ・権限・セキュリティ

D1のSQL、APIキー、WorkersのSecrets、データベースのバインディングを分離します。Cloudflareのアカウント管理者、デプロイ担当、データ読み取り者、削除者に最小権限を付け、開発用Workerから本番D1へ接続しないようにします。SQLインジェクションを防ぐため、バインドパラメーターと入力検証を使います。

個人情報を含む行は、保存地域、バックアップ、Time Travel、エクスポート、削除証跡を確認します。egress無料でも、誤った公開、漏えい、復元ファイルの持ち出しは安全上の問題です。ログへSQLやトークンを出さない設計にし、監査ログの保持期間と閲覧権限を決めます。

公式料金で計算表を更新する

Cloudflare D1公式料金で読み取り、書き込み、保存、無料枠、egress条件を確認し、D1公式利用量の確認方法でmeta値やAnalyticsを参照します。Workerの実行費はWorkers公式料金へ分けてください。料金式へ実測の行数を入れ、インデックス、再試行、保存、Time Travelまで含めたとき、D1の月額と運用上限が同時に見えてきます。

参照:Cloudflare D1公式料金Cloudflare D1公式課金確認(2026年8月28日確認)。価格、無料枠、上限はプランと更新時期で変動します。

タイトルとURLをコピーしました