メトリクスと分析
D1は、クエリのボリューム、クエリのレイテンシ、およびアカウント内のすべてのデータベースまたは各データベースのストレージサイズを検査するためのデータベース分析を公開します。
Cloudflareダッシュボード ↗のチャートに表示されるメトリクスは、CloudflareのGraphQL Analytics APIからクエリされています。メトリクスには、GraphQLまたはHTTPクライアントを介してプログラム的にアクセスできます。
D1は現在、以下のメトリクスをエクスポートします:
| メトリクス | GraphQLフィールド名 | 説明 |
|---|---|---|
| 読み取りクエリ (qps) | readQueries | データベースに対して発行された読み取りクエリの数。これは生の読み取りクエリの数であり、請求には使用されません。 |
| 書き込みクエリ (qps) | writeQueries | データベースに対して発行された書き込みクエリの数。これは生の書き込みクエリの数であり、請求には使用されません。 |
| 読まれた行数 (カウント) | rowsRead | クエリ全体で読み取られた(スキャンされた)行の数。行のカウント方法の詳細については、料金を参照してください。 |
| 書き込まれた行数 (カウント) | rowsWritten | クエリ全体で書き込まれた行の数。 |
| クエリ応答 (バイト) | queryBatchResponseBytes | シリアライズされたクエリ応答の総応答サイズ(すべての列名、行、およびメタデータを含む)。バイト単位で報告されます。 |
| クエリレイテンシ (ms) | queryBatchTimeMs | サーバー側での応答シリアル化を含む、総クエリ応答時間。ミリ秒単位で報告されます。 |
| ストレージ (バイト) | databaseSizeBytes | データベースの最大サイズ。バイト単位で報告されます。 |
メトリクスは過去31日間のデータをクエリ(および保持)できます。
D1は、各個別のクエリに対して、クライアントAPIを介して読み取られた行数、書き込まれた行数(またはその両方)を返します。
行数は、そのクエリによって読み取られた(スキャンされた)または書き込まれた行の正確なカウントです。 行数を検査して、特定のクエリのパフォーマンスとコストを理解し、インデックスを使用して読み取られる行数を削減できるかどうかを確認します。クエリ数を使用して、データベースに対するトラフィックの総量を理解し、どのデータベースがアクティブに使用されているかを判断します。
行のカウント方法の詳細については、料金ドキュメントを参照してください。
D1のデータベースごとの分析は、Cloudflareダッシュボードで利用可能です。データベースの現在および過去のメトリクスを表示するには:
- Cloudflareダッシュボード ↗にログインし、アカウントを選択します。
- Workers & Pages > D1 ↗に移動します。
- 既存のデータベースを選択します。
- メトリクスタブを選択します。
オプションで、クエリする時間ウィンドウを選択できます。デフォルトは過去24時間です。
D1データベースの分析をGraphQL Analytics APIを介してプログラム的にクエリできます。このAPIは、Cloudflareダッシュボードと同じデータセットをクエリし、GraphQLのイントロスペクションをサポートしています。
D1のGraphQLデータセットには、CloudflareアカウントIDを持つaccountTagフィルターが必要で、以下が含まれます:
d1AnalyticsAdaptiveGroupsd1StorageAdaptiveGroupsd1QueriesAdaptiveGroups
特定の$databaseIdに対して、readQueriesとwriteQueriesの合計をクエリするには:
query { viewer { accounts(filter: { accountTag: $accountId }) { d1AnalyticsAdaptiveGroups( limit: 10000 filter: { date_geq: $startDate date_leq: $endDate databaseId: $databaseId } orderBy: [date_DESC] ) { sum { readQueries writeQueries } dimensions { date databaseId } } } }}各データベースごとの平均queryBatchTimeMsと90パーセンタイルqueryBatchTimeMsをクエリするには:
query { viewer { accounts(filter: { accountTag: $accountId }) { d1AnalyticsAdaptiveGroups( limit: 10000 filter: { date_geq: $startDate date_leq: $endDate databaseId: $databaseId } orderBy: [date_DESC] ) { quantiles { queryBatchTimeMsP90 } dimensions { date databaseId } } } }}アカウント全体のreadQueriesとwriteQueriesをクエリするには:
query { viewer { accounts(filter: { accountTag: $accountId }) { d1AnalyticsAdaptiveGroups( limit: 10000 filter: { date_geq: $startDate date_leq: $endDate databaseId: $databaseId } ) { sum { readQueries writeQueries } } } }}D1は、クエリのパフォーマンスを理解し、デバッグするためのメトリクスを提供します。これらはGraphQLのd1QueriesAdaptiveGroupsまたはwrangler d1 insightsコマンドを介してアクセスできます。
D1は、クエリ実行全体でメトリクスを分析しやすくするために、クエリ文字列をキャプチャします。バウンドパラメータは、機密情報を削除するためにキャプチャされません。
実行回数による上位10クエリを見つけるには:
npx wrangler d1 insights <database_name> --sort-type=sum --sort-by=count --count=10平均実行時間による上位10クエリを見つけるには:
npx wrangler d1 insights <database_name> --sort-type=avg --sort-by=time --count=10過去7日間に書き込まれた行数による上位10クエリを見つけるには:
npx wrangler d1 insights <database_name> --sort-type=sum --sort-by=writes --count=10 --timePeriod=7d