Skip to content

Metrics and analytics

Hyperdrive exposes analytics that allow you to inspect query volume, query latency, cache hit ratios, and connection pool metrics for each Hyperdrive configuration in your account.

Metrics

Hyperdrive currently exports metrics via the hyperdriveQueriesAdaptiveGroups and hyperdrivePoolSizesAdaptiveGroups GraphQL datasets.

Query metrics

The hyperdriveQueriesAdaptiveGroups dataset contains the following metrics:

MetricGraphQL Field NameDescription
QueriescountThe number of queries issued against your Hyperdrive in the given time period.
Cache StatuscacheStatusWhether the query was cached or not. Can be one of disabled, hit, miss, uncacheable, multiplestatements, notaquery, oversizedquery, oversizedresult, parseerror, transaction, and volatile.
Query BytesqueryBytesThe size of your queries, in bytes.
Result BytesresultBytesThe size of your query results, in bytes.
Connection LatencyconnectionLatencyThe time (in milliseconds) required to establish new connections from Hyperdrive to your database, as measured from your Hyperdrive connection pool(s).
Query LatencyqueryLatencyThe time (in milliseconds) required to query (and receive results) from your database, as measured from your Hyperdrive connection pool(s).
Event StatuseventStatusWhether a query responded successfully (complete) or failed (error).

The volatile cache status indicates the query contains a PostgreSQL function categorized as STABLE or VOLATILE (for example, NOW(), RANDOM()). Refer to Query caching for details on which functions affect cacheability.

Pool size metrics

The hyperdrivePoolSizesAdaptiveGroups dataset contains the following connection pool metrics:

MetricGraphQL Field NameDescription
Avg. open connectionsavg.currentPoolSizeAverage number of connections currently open in the pool.
Avg. available slotsavg.availablePoolSlotsAverage number of pool connections available for checkout.
Avg. waiting clientsavg.waitingClientsAverage number of clients waiting for a connection from the pool.
Pool size maximummax.maxPoolSizeConfigured maximum size of the connection pool.
Peak open connectionsmax.currentPoolSizePeak number of connections open in the pool.
Peak waiting clientsmax.waitingClientsPeak number of clients waiting for a connection from the pool.

Connection contention appears as a spike in waiting clients, or when open connections consistently approach the pool size maximum. If your open connections regularly approach this limit, consider increasing your Hyperdrive connection limit.

Metrics can be queried (and are retained) for the past 31 days.

View metrics in the dashboard

Per-database analytics for Hyperdrive are available in the Cloudflare dashboard. To view current and historical metrics for a Hyperdrive configuration:

  1. In the Cloudflare dashboard, go to the Hyperdrive page.

    Go to Hyperdrive
  2. Select an existing Hyperdrive configuration.

  3. Select the Metrics tab.

You can optionally select a time window to query. This defaults to the last 24 hours.

The dashboard includes a Pool connections chart, which displays waiting connections, open connections, and the pool size maximum. You can use the location selector to filter by specific Cloudflare locations.

Query via the GraphQL API

You can programmatically query analytics for your Hyperdrive configurations via the GraphQL Analytics API. This API queries the same datasets as the Cloudflare dashboard, and supports GraphQL introspection.

Hyperdrive's GraphQL datasets require an accountTag filter with your Cloudflare account ID. Hyperdrive exposes the hyperdriveQueriesAdaptiveGroups and hyperdrivePoolSizesAdaptiveGroups datasets.

Write GraphQL queries

Examples of how to explore your Hyperdrive metrics.

Get the number of queries handled via your Hyperdrive config by cache status

query HyperdriveQueries(
$accountTag: string!
$configId: string!
$datetimeStart: Time!
$datetimeEnd: Time!
) {
viewer {
accounts(filter: { accountTag: $accountTag }) {
hyperdriveQueriesAdaptiveGroups(
limit: 10000
filter: {
configId: $configId
datetime_geq: $datetimeStart
datetime_leq: $datetimeEnd
}
) {
count
dimensions {
cacheStatus
}
}
}
}
}

Get the average query and connection latency for queries handled via your Hyperdrive config within a range of time, excluding queries that failed due to an error

query AverageHyperdriveLatencies(
$accountTag: string!
$configId: string!
$datetimeStart: Time!
$datetimeEnd: Time!
) {
viewer {
accounts(filter: { accountTag: $accountTag }) {
hyperdriveQueriesAdaptiveGroups(
limit: 10000
filter: {
configId: $configId
eventStatus: "complete"
datetime_geq: $datetimeStart
datetime_leq: $datetimeEnd
}
) {
avg {
connectionLatency
queryLatency
}
}
}
}
}

Get the total amount of query and result bytes flowing through your Hyperdrive config

query HyperdriveQueryAndResultBytesForSuccessfulQueries(
$accountTag: string!
$configId: string!
$datetimeStart: Date!
$datetimeEnd: Date!
) {
viewer {
accounts(filter: { accountTag: $accountTag }) {
hyperdriveQueriesAdaptiveGroups(
limit: 10000
filter: {
configId: $configId
datetime_geq: $datetimeStart
datetime_leq: $datetimeEnd
}
) {
sum {
queryBytes
resultBytes
}
}
}
}
}

Get the pool size metrics for your Hyperdrive config

query HyperdrivePoolSizes(
$accountTag: string!
$configId: string!
$datetimeStart: Time!
$datetimeEnd: Time!
) {
viewer {
accounts(filter: { accountTag: $accountTag }) {
hyperdrivePoolSizesAdaptiveGroups(
limit: 10000
filter: {
configId: $configId
datetime_geq: $datetimeStart
datetime_leq: $datetimeEnd
}
) {
avg {
currentPoolSize
availablePoolSlots
waitingClients
}
max {
maxPoolSize
currentPoolSize
waitingClients
}
dimensions {
coloCode
}
}
}
}
}