Explanation
Azure Database for PostgreSQL - Flexible Server often defaults to general-purpose D-series VMs, which may be oversized for many production or development workloads. PostgreSQL typically does not require a high sustained high CPU, making it well-suited to memory-optimized (E-series) or burstable (B-series) instances.
When actual usage consistently falls below the provisioned capacity - particularly CPU - the deployment may be overprovisioned, resulting in unnecessary compute charges. Choosing the wrong VM family or size leads to silent overspend, especially in long-lived database environments.
Relevant Billing Model
- Charged based on:
- Provisioned compute (vCores and instance family)
- Provisioned storage (per GB/month)
- Pricing varies significantly by VM series (e.g., D-series vs. B-series vs. E-series)
- Charges accrue continuously, regardless of actual CPU or memory usage
Detection
- Analyze average CPU and memory utilization of PostgreSQL Flexible Server instances
- Determine whether current performance requirements justify the provisioned instance size
- Identify servers running on D-series or other general-purpose SKUs that could be supported by B-series or E-series
- Validate compatibility and performance before considering a shift in instance family
Remediation
- Resize the PostgreSQL Flexible Server to a smaller or more suitable VM family based on actual workload behavior
- For low-CPU workloads, consider B-series (burstable) or E-series (memory-optimized) configurations
- Review usage patterns quarterly to ensure the selected SKU remains aligned with performance needs
- Avoid unnecessary performance buffer unless justified by workload spikes or growth