13.1.3: Cost Optimization Strategies
- Page ID
- 48147
\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)
\( \newcommand{\dsum}{\displaystyle\sum\limits} \)
\( \newcommand{\dint}{\displaystyle\int\limits} \)
\( \newcommand{\dlim}{\displaystyle\lim\limits} \)
\( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)
( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)
\( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)
\( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)
\( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)
\( \newcommand{\Span}{\mathrm{span}}\)
\( \newcommand{\id}{\mathrm{id}}\)
\( \newcommand{\Span}{\mathrm{span}}\)
\( \newcommand{\kernel}{\mathrm{null}\,}\)
\( \newcommand{\range}{\mathrm{range}\,}\)
\( \newcommand{\RealPart}{\mathrm{Re}}\)
\( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)
\( \newcommand{\Argument}{\mathrm{Arg}}\)
\( \newcommand{\norm}[1]{\| #1 \|}\)
\( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)
\( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)
\( \newcommand{\vectorA}[1]{\vec{#1}} % arrow\)
\( \newcommand{\vectorAt}[1]{\vec{\text{#1}}} % arrow\)
\( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vectorC}[1]{\textbf{#1}} \)
\( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)
\( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)
\( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)
\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\(\newcommand{\longvect}{\overrightarrow}\)
\( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)
\(\newcommand{\ket}[1]{\left| #1 \right>}\)
\(\newcommand{\bra}[1]{\left< #1 \right|}\)
\(\newcommand{\braket}[2]{\left< #1 \vphantom{#2} \right| \left. #2 \vphantom{#1} \right>}\)
\(\newcommand{\braopket}[3]{\left< #1 \vphantom{#2}\vphantom{#3} \right| #2 \vphantom{#1}\vphantom{#3} \left| #3 \vphantom{#1}\vphantom{#2} \right>}\)
\(\newcommand{\qmvec}[1]{\mathbf{\vec{#1}}}\)
\(\newcommand{\op}[1]{\hat{\mathbf{#1}}}\)
\(\newcommand{\expect}[1]{\langle #1 \rangle}\)
\(\newcommand{\dfn}[1]{\emph{\textbf{#1}}}\)
Cost Optimization Strategies
Cloud analytics platforms offer cost advantages but still require careful optimization. For steady, predictable workloads (e.g. a baseline data warehouse), commitment-based pricing like AWS Reserved Instances (RIs), Azure Reservations, or Google Committed Use Discounts can cut costs significantly. For example, RIs require a 1–3 year commitment to instance capacity but can save ~30–72% over on-demand rates. Conversely, spot instances or preemptible VMs allow bidding on spare capacity at steep discounts (often 70–90% off). These are ideal for fault-tolerant batch analytics jobs (e.g. large ETL or AI training) because they significantly reduce compute costs. Many organizations use a hybrid approach: core critical workloads run on reserved or on-demand instances for stability, while ephemeral batch pipelines use spot instances.
Another strategy is query and workload optimization. In data warehouses and query engines, using columnar storage and predicate push-down can reduce I/O and cost. For instance, Amazon Redshift uses columnar compression and zone maps to scan only needed columns. Partitioning large tables and using efficient file formats (Parquet, ORC) or query caching prevents scanning entire datasets. Similarly, in serverless query services (Athena/BigQuery), costs are based on data scanned, so sorting data and compressing it dramatically lowers costs. Caching results or materialized views in systems like BigQuery can also reduce repeated compute. Performance tuning first (e.g. optimizing SQL joins, filtering early) is advised before adding reserved capacity.
Data tiering is also key for storage cost control. Cloud object storage offers multiple tiers: for example, Amazon S3 has Intelligent-Tiering, Standard-IA, Glacier, etc. Frequently accessed data stays in hot tiers, while older or infrequently accessed data auto-moves to cheaper tiers (saving up to 68–95% on storage). Azure Data Lake Storage (Gen2) similarly builds on Blob Storage’s lifecycle and tiering features to migrate cold data to lower-cost tiers. By defining lifecycle rules (e.g. move data to archive after 90 days), analytics workloads can be both performant and cost-effective.



