Skip to main content

BigQuery

SmartSRE provides comprehensive optimization and cost control for Google BigQuery.

What SmartSRE Scans

CategoryChecks
CostQuery costs, slot utilization, on-demand spend
PerformanceSlow queries, missing partitioning/clustering
StorageUnused tables, expired data, storage optimization
ConfigurationReservation settings, quotas, access controls

Findings

High-Priority

Issue TypeSeverityDescription
expensive_queryHighQuery exceeds cost threshold
slot_overutilizationHighSlot usage > 95% causing queuing
unpartitioned_large_tableMediumTable > 1TB without partitioning

Medium-Priority

Issue TypeSeverityDescription
no_clusteringLowTable could benefit from clustering
expired_tableMediumTable not queried in 90+ days
suboptimal_partition_filterMediumQueries scanning full partitions

Available Fixes

Slot Management

OperationDescriptionImpact
increase_slotsTemporarily add slot capacityLow
decrease_slotsReduce slot allocationLow
create_reservationCreate new reservation poolMedium

Table Optimization

OperationDescriptionImpact
add_partitioningEnable time-based partitioningMedium
add_clusteringAdd clustering columnsLow
set_table_ttlConfigure table expirationMedium

Cost Control

OperationDescriptionImpact
set_query_quotaLimit daily query bytesLow
archive_tableMove to long-term storage tierMedium
delete_unused_tableRemove unused tablesHigh

Required Permissions

For Scanning

roles/bigquery.resourceViewer
roles/bigquery.jobUser
bigquery.reservations.get

For Remediation

roles/bigquery.dataEditor
roles/bigquery.admin (for reservations)

Example ChangeSet

{
"service": "bigquery",
"intent": "Optimize slot allocation for cost efficiency",
"steps": [
{
"op": "decrease_slots",
"resource_ref": {
"project_id": "analytics-prod",
"location": "US",
"reservation_name": "default"
},
"params": {
"current_slots": 500,
"target_slots": 300
},
"estimated_cost_usd": -2000.00,
"impact_score": 25
}
]
}

Configuration Options

Configure BigQuery-specific thresholds in Settings → Risk Policy:

SettingDefaultDescription
min_slots100Minimum slot allocation
max_slots1000Maximum slot allocation
query_cost_threshold_usd10Flag queries exceeding this cost
table_expiry_days90Days without access before flagging

Best Practices

  1. Enable slot analytics — Ensure INFORMATION_SCHEMA.JOBS access
  2. Set project budgets — Enable accurate cost guardrails
  3. Use partitioning scopes — Target specific datasets for scanning
  4. Monitor query patterns — Use findings to identify optimization opportunities