Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

よくある質問

最終更新 Markdown で表示Agent セットアップ

料金

D1 には常に Free プランがありますか?

はい、Workers Free プラン には、D1 を無料で試作・検証できる機能が常に含まれます。

Free プランで読み取り・書き込みの日次上限、または合計ストレージ上限を超えた場合はどうなりますか?

アカウントが日次の読み取り上限または書き込み上限に達すると、D1 に対してクエリを実行できなくなります。D1 API は、日次上限を超えたことを示すエラーをクライアントに返します。含まれるストレージ上限に達した場合は、新しいデータを挿入したり、テーブルを作成・変更したり、インデックスやトリガーを作成する前に、使っていないデータベースを削除するか、古いデータを整理する必要があります。

Workers Paid プランへアップグレードすると、通常は数分以内にこれらの上限が解除されます。

有料プランで月次に含まれる読み取り、書き込み、またはストレージを超えた場合はどうなりますか?

追加の読み取り、書き込み、ストレージは、D1 の課金指標 に従って課金されます。

最終的な請求額を見積もるにはどうすればよいですか?

すべてのクエリは、そのクエリが読んだ行数(rows_read)と書いた行数(rows_written)の合計を含む meta オブジェクトを返します。たとえば、5000 行のテーブルに対してフルテーブルスキャン(例: SELECT * FROM users)を行うクエリは、rows_read5000 になります。

"meta": {
  "duration": 0.20472300052642825,
  "size_after": 45137920,
  "rows_read": 5000,
  "rows_written": 0
}

これらの値は D1 の Cloudflare ダッシュボードanalytics API にも含まれるため、読み取り量と書き込み量を特定のデータベース、期間、またはその両方に紐づけられます。

D1 はデータ転送 / エグレスに課金しますか?

いいえ。

追加のコンピュートに対して、D1 はさらに課金しますか?

D1 自体は追加のコンピュートに課金しません。D1 にクエリを実行して結果を計算する Workers(例: 結果を JSON にシリアライズする、クエリを実行する)は、D1 固有の使用量に加えて、Workers の料金 に従って課金されます。

ダッシュボードまたは Wrangler(CLI)から実行したクエリは、課金対象の使用量に含まれますか?

はい。データベースに対して実行したすべてのクエリは、既存データを新しいデータベースへ挿入する(INSERT)、テーブルスキャン(SELECT * FROM table)、インデックスの作成を含め、読み取りまたは書き込みとしてカウントされます。

インデックスを使って、クエリが読む行数を減らせますか?

はい。インデックスを使うと、クエリが読む行数を減らせます。よくクエリするテーブルとフィルター対象の列に インデックスを作成 すると、スキャンするデータ量が減り、同時にクエリ性能も向上します。読み取りが多いワークロード(最も一般的)では、特に有効です。インデックスが参照する列への書き込みは、インデックス更新のため少なくとも 1 行分の追加書き込みが発生します。ただし、インデックスによって読み取り行数が減る効果で、通常は相殺されます。

新しく作成したデータベース、または行のない空のテーブルは、ストレージに計上されますか?

はい。ただしごくわずかです。空のテーブルでも、列数(テーブル幅)に応じて少なくとも数キロバイトを使います。空のデータベースは約 12 KB のストレージを使います。

制限

D1 データベースはどれくらいの処理ができますか?

D1 は、ユーザー単位、テナント単位、エンティティ単位など、小さめ(10 GB)のデータベースを複数並べて水平にスケールアウトする設計です。 料金はクエリとストレージだけなので、数千のデータベースを追加料金なしで使ってアプリケーションを構築できます。

ストレージ

各 D1 データベースは、最大 10 GB のデータを保存できます。

同時実行とスループット

個々の D1 データベースは本質的に単一スレッドで、クエリを 1 つずつ処理します。

最大スループットは、クエリの所要時間に直結します。

  • 平均クエリが 1 ms なら、おおよそ毎秒 1,000 クエリを実行できます。
  • 平均クエリが 100 ms なら、毎秒 10 クエリを実行できます。

同時リクエストが多すぎるデータベースは、まずキューに入れようとします。キューが満杯になると、データベースは 「overloaded」エラー を返します。

個々の D1 データベースは、1 つの Durable Object で支えられています。D1 の読み取りレプリケーション を使う場合、各レプリカインスタンスは別の Durable Object であり、この指針はレプリカインスタンスごとに独立して適用されます。

クエリ性能

スループットでもっとも重要なのはクエリ性能です。目安は次のとおりです。

  • id に適切なインデックスがある SELECT name FROM users WHERE id = ? のような読み取りクエリは、SQL 実行時間が 1 ミリ秒未満です。
  • INSERTUPDATE のような書き込みクエリは、SQL 実行時間に数ミリ秒かかることがあり、書き込む行数に依存します。書き込みは複数拠点へ耐久的に永続化する必要があります。詳細は D1 が内部でデータを永続化する方法 を参照してください。
  • 数百万行に影響する大きな UPDATEDELETE などのデータ移行は、バッチで実行してください。一度に数十万行や数百 MB のデータを変更しようとする単一クエリは、実行制限を超えます。作業を小さな塊(例: 1 回あたり 1,000 行)に分けて、プラットフォーム制限内に収めてください。

クエリを速く効率よくするには、SQL スキーマに適切なインデックスを付けてください

CPU とメモリ

クエリ実行や結果のシリアライズを含む D1 データベース上の操作は、Workers プラットフォームの CPU とメモリ制限 の範囲で実行されます。

これらの制限、またはほかのプラットフォーム制限に達すると、エラーが発生します。詳細は D1 のエラー一覧 を参照してください。

Worker は D1 に同時に何本の接続を開けますか?

Worker の呼び出しごとに、D1 への接続を同時に最大 6 本開けます。

Worker の同時接続の詳細は、同時に開く接続 を参照してください。

役に立ちましたか?