| 機能 | 制限 |
|---|---|
| アカウントあたりのデータベース数 | 50,000(Workers Paid)1 / 10(Free) |
| 最大データベースサイズ | 10 GB(Workers Paid)/ 500 MB(Free) |
| アカウントあたりの最大ストレージ | 1 TB(Workers Paid)2 / 5 GB(Free) |
| Time Travel の期間(ポイントインタイムリカバリー) | 30 日(Workers Paid)/ 7 日(Free) |
| Time Travel の最大復元回数 | 10 分間に 10 回(データベースあたり) |
| Worker 呼び出しあたりのクエリ数(サブリクエスト制限 を参照) | 1000(Workers Paid)/ 50(Free) |
| テーブルあたりの最大列数 | 100 |
| テーブルあたりの最大行数 | 無制限(データベースあたりのストレージ制限を除く) |
文字列、BLOB、またはテーブル行の最大サイズ |
2,000,000 バイト(2 MB) |
| SQL ステートメントの最大長 | 100,000 バイト(100 KB) |
| クエリあたりの最大バインドパラメーター数 | 100 |
| SQL 関数あたりの最大引数数 | 32 |
LIKE または GLOB パターンの最大文字数(バイト) |
50 バイト |
| Workers スクリプトあたりの最大バインディング数 | 約 5,000 3 |
| SQL クエリの最大実行時間 | 30 秒 4 |
ファイルインポート(d1 execute)の最大サイズ |
5 GB 5 |
Cloudflare は、Workers KV、Durable Objects、R2 など、ほかのストレージソリューションも提供しています。製品ごとに利点と制限が異なります。ユースケースに合うストレージは データまたはストレージ製品の選び方 で確認してください。
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 ミリ秒未満です。INSERTやUPDATEのような書き込みクエリは、SQL 実行時間に数ミリ秒かかることがあり、書き込む行数に依存します。書き込みは複数拠点へ耐久的に永続化する必要があります。詳細は D1 が内部でデータを永続化する方法 ↗ を参照してください。- 数百万行に影響する大きな
UPDATEやDELETEなどのデータ移行は、バッチで実行してください。一度に数十万行や数百 MB のデータを変更しようとする単一クエリは、実行制限を超えます。作業を小さな塊(例: 1 回あたり 1,000 行)に分けて、プラットフォーム制限内に収めてください。
クエリを速く効率よくするには、SQL スキーマに適切なインデックスを付けてください。
クエリ実行や結果のシリアライズを含む D1 データベース上の操作は、Workers プラットフォームの CPU とメモリ制限 の範囲で実行されます。
これらの制限、またはほかのプラットフォーム制限に達すると、エラーが発生します。詳細は D1 のエラー一覧 を参照してください。
Worker の呼び出しごとに、D1 への接続を同時に最大 6 本開けます。
Worker の同時接続の詳細は、同時に開く接続 を参照してください。
-
Workers Paid および Enterprise プランでは、リクエストによりアカウントあたりのデータベース数の上限を引き上げられます。アカウントあたり数百万〜数千万(またはそれ以上)のデータベースにも対応できます。引き上げの依頼方法は、このページの制限引き上げの案内を参照してください。 ↩
-
Workers Paid および Enterprise プランでは、リクエストによりアカウントあたりの最大ストレージを引き上げられます。引き上げの依頼方法は、このページの制限引き上げの案内を参照してください。 ↩
-
1 つの Worker スクリプトのスクリプトメタデータは最大 1 MB です。バインディングとは、D1 データベース、KV ネームスペース、環境変数、シークレットなどのリソースへのバインドです。各リソースバインディングは約 150 バイトですが、環境変数とシークレットは指定した値のサイズに依存します。環境変数を除くと、1 つの Worker スクリプトに最大約 5,000 の D1 データベースをバインドできます。 ↩
-
Cloudflare API へのリクエストは 30 秒以内に完了する必要があります。そのため、この時間制限はバッチ呼び出し全体にも適用されます。 ↩
-
インポートするファイルは R2 にアップロードされます。R2 のアップロード制限 を参照してください。 ↩