BigQuery 計費方式完整介紹:費用結構、自動擴充與省錢技巧全攻略

BigQuery 計費分兩種模式:

  • On-Demand:每掃描 1 TB 收費約 $7.19 美元,不查詢不收費
  • Editions:2023 年新架構,分 Standard、Enterprise、Enterprise Plus,支援自動擴縮
  • Flat-rate 已經沒有再提供,請以 Editions 為主。

官方說明參考這份文件,以下逐一拆解。


1. BigQuery 計費的核心單位:Slot 是什麼?

Slot 是 BigQuery 的虛擬 CPU 單位,代表查詢執行時可用的運算能力。BigQuery 執行查詢時,會自動把工作分散到多個 Slot 並行處理,Slot 越多查詢越快。

Slot 中文叫運算單元,在大陸叫”槽”。

根據 Google 以前的公開文件 1 槽 (Slot) = 0.5個 vCPU和 0.5GB 的記憶體。

但後來可能由於硬體效能提升,後來隱藏了這個數據。

Slot 不夠用時會發生什麼事?

On-Demand 模式下,BigQuery 提供每個專案共享的 Slot 資源池。當同一專案內有多個大型查詢同時執行時,會出現排隊(Queuing)的情況,導致執行時間延長。

Flat Rate 或 Editions 模式下,你買多少 Slot 就用多少,不會自動借用額外資源。

BigQuey 計費 Slot 是什麼?

2. 隨需計費(On-Demand Pricing)深度解析

查詢費用的計算方式

  • 計費單位:每掃描 1 TB 收費約 $7.19 美元(台灣區域 asia-east1)
  • 最小計費單位:10 MB,就算你的查詢只掃描 1 MB的資料,系統仍以 10 MB 計算
  • 計費基礎:查詢實際讀取的欄位資料量,不是整張表的大小
  • 要注意,如果你的表格有 100,000 資料,即使你查詢使用 Whare 或 Limit 語法,只撈出 10 筆資料,它還是讀取 100,000 筆資料,除非你有做分區表(後面詳述) 。
  • 每個月前面 1 TB 屬於免費額度,超過 1 TB 的資料量才開始計費。
  • 可參考 GCP 價格計算機的數據:
BigQuery 超過 1 TB 的資料量才開始計費,如圖 2 TB 只計 1 TB 費用。

使用 Dry Run 預估費用

執行查詢前,可用 Dry Run 模式預估掃描量,完全不收費。

操作方式:

在 BigQuery 主控台,點選「More → Query settings → Dry Run」;或在 CLI 使用 --dry_run 參數,系統會直接告訴你這次查詢預計掃描多少 Bytes。

另外,BigQuery 主控台的 SQL 編輯器右上角,每次寫完查詢都會顯示「This query will process X GB」。執行前先看這個數字,是控制費用的第一道關卡。

BigQuery 的 Dry Run 模式


3. BigQuery Editions:新版計費方案全解析

以前 BigQuery 提供 Flat Rate,有別於 On-Demand 像計程車跳錶,每掃描一點資料收一點錢;

Flat Rate 像月租車,費用固定,查詢不另外計費。

2023 年,Google 推出 Editions 架構,重新定義 BigQuery 的計費方式。

Standard、Enterprise 與 Enterprise Plus 比較

版本特色適合對象
Standard支援 Autoscaler,按使用 Slot 小時數計費,無承諾折扣一般分析工作負載
Enterprise加入 CMEK、資料列層級安全控制、BI Engine;支援月付與年約折扣有安全合規需求的企業
Enterprise PlusCross-region 容災、Time Travel 最長 7 天對資料治理有嚴格要求的大型企業

Editions 和舊版 Flat Rate 最大的差異

舊版 Flat Rate:Slot 數量固定,資源無法自動調整。

如果你買了 100 個 Slots (運算單元),那這 100 個單位就是專屬於你的,即便你的工程師下班了、資料庫閒置在那裡,你還是要付這 100 個單位的完整費用。

Editions:引入 Autoscaler,查詢量高峰時自動增加 Slot,閒置時自動縮減,不再需要猜測最高需求來決定購買數量。

正因為計費邏輯從「買斷固定數量」變成了「按實際彈性用量付費」,所以你在設定 Reservations (預留項目) 時,會發現 Google 不再給你一個「固定 100 Slots 的總價」。

BigQuery Editions 計費架構

系統現在只會讓你設定一個 Max Reservoir Size (預留項目大小上限),這就像是幫你的信用卡設一個「單筆消費限額」,防止自動擴充得太過火導致帳單爆炸。

BigQuery 預留項目大小上限

既然實際支出是根據每分每秒的波動累積起來的,那份試算表列出的 25%、50%、75% Utilization (使用率),其實是在幫你估計:如果你的業務平均負載在這些水位,你月底大概會收到多少錢的帳單。

BigQuery 保留項目依照預估用量的試算

之所以沒有列出 100% 的費用,是因為在 Autoscaling (自動擴充) 的機制下,除非你的查詢量大到 24 小時都把這 100 個 Slots 佔滿,否則你幾乎不會付到 100% 的錢。

這也是為什麼你看到 Baseline (基準運算單元) 的選項會被設為 0 或較低的數值;Baseline 代表「無論如何我都要保有的最低戰力」,如果你的 Baseline 設得越低,系統在沒事做的時候就能縮得越小,省下更多費用。

你可能會問, On-Demand 的都直接去使用 Enterprise (企業版) 的 自動擴充 (Autoscaling) 功能就好了,反正沒有用就沒費用,有用還比較便宜,對嗎?

BigQuery 隱藏的「計費邏輯」

BigQuery Edition 並不一定比原本的 On-demand (按需求計費) 便宜,因為計費單位的根本不同:

On-demand (按需求計費) 的模式下,Google 是看你的 SQL 指令「掃描了多少資料量」來收錢。

BigQuery Edition ,計費的標竿就完全改變了,系統改為計算你「使用了多少運算力(Slots)以及用了多久(時間)」。就像搬家「按出動的人力和時間算錢」一樣。

哪一種比較划算,完全取決於你的行李(資料)長什麼樣子

首先要考慮你原本 On-Deman 的每月費用是否超過 2,000 美元,這種用量在台灣通常是大企業才要考慮。

如果你的查詢語法寫得不夠有效率,導致系統需要動用大量 Slots 埋頭苦幹很久,那麼在 Enterprise (企業版) 下產生的費用,反而有可能會超過原本的 On-demand (按需求計費)

如果你的工作負載(Workload)是屬於那種「掃描資料量極大,但運算過程很簡單」的類型,Enterprise (企業版) 可能會顯得非常划算;反之,如果你的資料量很小,但 SQL 邏輯複雜到讓系統算到滿頭大汗,那 On-demand (按需求計費) 反而可能是你的省錢好朋友。

何時要切換成 BigQuery Editions?

Commitment 承諾方案的折扣

BigQuery 的承諾使用折扣 – 支出型和資源型

既然叫做「承諾」,就是不管你有沒有用 Slots,你每個月都要支付固定的費用。

這是和上述 BigQuery Editions 最大的不同。

資源型承諾 (Resourced-Based CUD):折扣最深但相對固定

從上方表格最右側兩欄看到,你會發現 Resource CUDs 的價格較低,因為你給 Google 的承諾非常死,讓他們能非常精確地預估硬體採購和機房調度,所以他們給出的折扣也最慷慨,3 年期的價格甚至能讓你省下將近 40% 的費用。

然而,高折扣的代價就是「專款專用」。當你簽下 Resource CUDs 時,通常需要鎖定特定的 Slots (運算單元) 數量以及特定的 Region (區域)

這對於已經進入穩定營運期、且每天運算量都像心電圖一樣平穩的老牌公司來說是首選,因為他們很清楚自己每小時就是要燒掉這麼多 Slots,直接選這個方案最省錢。

支出型承諾 (Spent Based):靈活但折扣較淺

表格左側數過來第二、三欄就是支出型承諾,2026 年才正式上線,例如「我保證接下來一年,每小時一定會在這裡消費 100 元」。

不論你的 Slots (運算單元) 是在台灣還是在日本執行,或者你今天用的是 Enterprise (企業版) 還是 Enterprise Plus (企業加強版),這份承諾都能幫你折抵支出。因為它給了你極大的轉身空間,所以 Google 給你的折扣就相對比較小,大約是在 10% 到 20% 之間。

這種適合那些業務還在變動、或者數據分散在多個 Regions (區域) 的團隊。

如果你今天還在測試哪一種 BigQuery Edition (版本) 最適合你,或者你擔心未來半年公司會把機房從台灣搬到其他國家,那麼鎖定這種以「美金金額」為單位的 BigQuery CUD,就能確保你的折扣不會因為換了環境就失效。

它就像一張通用的禮券,雖然面額折扣沒那麼多,但走到哪都能用,這就是它存在的最大價值。


4. 儲存費用(Storage Costs)完整說明

Active Storage vs. Long-term Storage

類型條件費率
Active Storage(活躍儲存)過去 90 天內有被修改較高
Long-term Storage(長期儲存)連續 90 天未被修改,自動降級約為活躍儲存的一半

Long-term Storage 的降級是自動發生的,不需要手動操作。

降低儲存成本的策略

  • 超過一年的歷史資料匯出到 Google Cloud Storage(GCS),費率比 BigQuery 低
  • 使用 Table Expiration 功能,設定資料過期自動刪除
  • 對大型表格採用分區設計,只保留必要分區在 BigQuery,其餘歸檔

5. 免費額度(Free Tier)

每個月的免費額度:

  • 查詢:前 1 TB 掃描量免費
  • 儲存:前 10 GB 免費
  • 資料匯入:Batch Load 完全免費(這點常被忽略)

PS. 這個免費額度是完全不用註冊 300 美金試用的情況下,也可以直接使用的,可參考 BigQuery 免費沙箱


6. 其他潛在費用

資料串流(Streaming Insert)費用

BigQuery 載入資料的費用

使用 Streaming Insert 把即時資料寫入 BigQuery,按寫入資料量額外計費。

原本只有 Steaming Inserts 這個方法,後來又提供 BigQuery Storage Write API,更為划算。

如果不需要即時性,改用 Batch Load 可完全省掉這筆費用。

BigQuery ML 計費

BigQuery ML 兩類 Model 價差極大

你會看到 BigQuery ML 兩類 Model 價差極大,為什麼?

  • 線性回歸、邏輯回歸、K-means、PCA、時間序列等內建疊代模型:$312.50/TiB(台灣約 $359,依匯率與區域調整)。
  • AutoML Tables、DNN、boosted tree、隨機森林等外部模型:僅 $6.25/TiB(台灣約 $7),因前處理用標準查詢費率,訓練轉 Vertex AI 但折算低。

差異原因

內建疊代模型需多次掃描資料(預設 50 次迭代),計算密集,故單 TiB 處理位元組計費高(有效乘以迭代次數)。

外部模型多依賴 Vertex AI,因為這類模型被稱為 External Models(外部模型)或 Vertex AI 整合模型。

這報價其實只是一個「過路費」或是「代工準備費」。

BigQuery 只負責把數據整理好(這個過程稱為 Preprocessing 預處理),一旦數據準備好了,它就會把這些資料打包,送到隔壁棟專門做 AI 的工廠——Vertex AI 去進行真正的訓練。

而 Vertex AI 的計費方式通常不是看資料量(TB),而是看它動用了多少台強大的機器、工作了幾個小時(這個單位叫做 Node-hour 節點小時),這才是真正昂貴的地方。

BigQuery BI Engine 費用

按 GB 小時計費,約 $0.0478 美元/GB/小時。BI 儀表板查詢頻繁時,這筆費用會快速累積。


7. 5 個實用的省錢技巧

7.1 避免 SELECT * 全表掃描

BigQuery 按掃描的欄位資料量計費。SELECT * 會讀取所有欄位,即使你只用其中幾個,費用照算。

一張有 100 個欄位的表格,只選取需要的 5 個欄位,查詢費用可降到原本的 5% 左右。

BigQuery 查詢欄位數量會影響費用

7.2 善用分區 (分割)(Partitioning)與叢集(Clustering)

分區:把大型表格按時間或其他欄位切分。查詢加上分區欄位的篩選條件,BigQuery 只掃描對應分區。

使用分割表降低查詢量和費用

叢集:在分區之內,進一步按特定欄位排序資料。

搭配使用分區和叢集,查詢費用可降低 50% 以上

BigQuery 資料分區與叢集架構

7.3 設定查詢上限與預算警示

在 BigQuery 設定每個用戶或每個專案的每日查詢費用上限(Cost Controls),超過門檻查詢會被自動拒絕。

搭配 Google Cloud Billing 的 Budget Alerts,費用達到設定百分比時自動發送通知。

7.4 善用 Materialized Views

有複雜查詢需要反覆執行(例如每天計算一次彙總報表),改用 Materialized Views(實體化視圖)。BigQuery 預先計算並儲存結果,後續查詢直接讀取,省去重複掃描的費用。底層資料更新時,Materialized Views 也會自動更新。

7.5 定期評估是否切換 Editions

月費持續增長,超過 2,000 美元時,用 BigQuery Slot Recommender 分析歷史查詢記錄,評估購買固定 Slot 是否更划算。


8. 如何監控與管理費用

用 Google Cloud Console 查看帳單

Billing 頁面可按專案、服務、時間段篩選費用,找出費用來源。

設定預算與費用警示

在 Cloud Billing 的「Budgets & alerts」設定預算上限,達到 50%、90%、100% 時自動發送通知。這是避免帳單超出預期的基本防線,每個 BigQuery 使用者都應該設定。


常見問題(FAQ)

Q1. Slot 買了沒用完,會退費嗎?

BigQuery Editions 的承諾費用固定收費,不論實際使用多少 Slot,費用照算。

Q2. SELECT * 真的會讓費用變很高嗎?

是的。BigQuery 依照掃描的欄位資料量計費,SELECT * 讀取所有欄位,就算只用少數欄位費用不變。改成只選必要欄位,有機會省下 80% 以上的查詢費用。

Q3. 如何查看每個查詢花了多少錢?

透過 INFORMATION_SCHEMA.JOBS_BY_PROJECT 查詢歷史記錄,欄位 total_bytes_billed 乘以當前費率即可估算費用。也可搭配 Cloud Billing Export,把費用明細匯出到 BigQuery 做深入分析。

Q4. BigQuery 資料匯入需要付費嗎?

Batch Load(批次匯入)免費。Streaming Insert(串流寫入)按寫入資料量額外收費。

Q5. 如何預防帳單突然暴增?

三管齊下:設定每個用戶的查詢費用上限(Cost Controls)、在 Cloud Billing 設定 Budget Alerts、定期審視使用量報告。

Table of Contents
返回頂端