本頁面提供範例,說明在一些最常見的情境中,如何計算計費單位。請注意,每項查詢處理的資料量可能不同,具體取決於查詢計畫、資料型態和可用索引等因素。
建議您使用查詢說明功能,進一步瞭解特定查詢的費用和效能。
讀取作業
大多數讀取作業都需要對特定文件執行點讀取,或根據 ID 掃描一系列資料。讀取作業會耗用讀取單元。請參閱以下範例。
全文搜尋
全文搜尋查詢的費用分為兩部分:對文字索引執行搜尋的費用,以及擷取文件的費用。對文字索引執行搜尋的費用,取決於查詢的複雜程度,以及為找出結果而掃描的索引資料量。影響這項費用的因素包括搜尋字詞的數量和性質 (例如字詞、詞組)、是否套用關聯性評分,以及需要檢查的索引項目數量。檢索相關文件的費用,取決於搜尋階段完成後擷取的文件數量和大小。
下表列出執行全文搜尋查詢時,與苗圃電子商務產品目錄相關的費用。這個範例假設集合中有 200,000 筆產品資訊,每筆產品資訊文件大小為 2 KiB,對應的文字搜尋索引大小約為 100 MiB。
| 查詢 | 程式碼範例 | 每項查詢預估耗用的讀取單元 | 預估費用 (區域:us-central1,以美元計) |
|---|---|---|---|
| 搜尋稀有的「乾水」堆疊平盤產品,擷取 3 份文件。 | |
10 個讀取單位 全文搜尋 7 個單位,傳回文件 3 個單位。 |
每百萬次查詢 $0.50 美元 |
| 搜尋所有室內柑橘樹,結果擷取了 36 份文件。 | |
42 個讀取單位 全文搜尋 6 個單位,傳回的文件 36 個單位。 |
每百萬次查詢 $2.10 美元 |
| 搜尋陽台花盆,會出現許多相符的產品。依關聯性排序結果,並限制只顯示前 50 筆搜尋結果。 | |
75 個讀取單位 全文搜尋 25 個單位,傳回的文件 50 個單位。 |
每百萬次查詢 $3.75 美元 |
以下範例說明不同查詢模式對費用的影響:
- 「dry water」查詢包含詞組 (
"dry water") 和其他字詞。詞組搜尋較為複雜,因為查詢引擎需要檢查詞元鄰近度和順序,因此搜尋階段會產生 7 個讀取單位。由於相符的文件很少,因此文件檢索費用很低。 - 「indoor」、「citrus」、「tree」查詢會搜尋三個獨立字詞。雖然每個字詞的複雜度略低於詞組搜尋,但仍需要查詢多個詞元。與「dry water」範例相比,這項查詢的搜尋索引掃描費用略低,為 6 個讀取單位,但傳回 36 份文件,因此總費用較高。
- 陽台花盆查詢的全文搜尋成本最高,達 25 個單位,遠高於其他查詢。這主要是因為它要求依據與許多文件相符的字詞,按照關聯性 (
.sort({score: {$meta: "textScore"}})) 排序結果。為了找出前 50 個最相關的結果,查詢引擎必須找出「balcony」或「planter」的「所有」潛在相符項目,計算每個項目的關聯性分數,然後排序。雖然最終只會擷取 50 份文件,但對索引中大量候選文件進行評分和排序,需要耗費大量運算資源。字詞的廣泛程度加上相關性評分的負擔,會使搜尋階段的成本更高。
地理空間查詢
地理空間查詢的費用取決於查詢的複雜程度、使用的特定條件和排序,以及掃描相關地理空間索引中所有資料所需的資源。
下表列出地圖應用程式執行地理空間查詢的相關費用。這個範例假設有 1,000,000 份文件代表搜尋點,每份搜尋點文件大小為 1 KiB,對應的地理空間索引大小約為 60 MiB。
| 查詢 | 程式碼範例 | 每項查詢預估耗用的讀取單元 | 預估費用 (區域:us-central1,以美元計) |
|---|---|---|---|
| 尋找 10 公里內的所有搜尋點,傳回 10 個相符結果。 | |
讀取單元總數為 16。 地理空間查詢需要 6 個讀取單元,傳回的文件需要 10 個讀取單元。 |
每百萬次查詢 $0.80 美元 |
| 找出距離不超過 100 公里的所有搜尋點,並從 1,000 個相符項目中傳回距離最近的前 10 個搜尋點 | |
讀取單元總數為 19。 依據地理空間查詢的 9 個讀取單元,以及傳回文件的 10 個額外單元。 |
每百萬次查詢 $0.95 美元 |
以下範例說明不同查詢模式對費用的影響:
- 10 公里半徑查詢:這項查詢會掃描較小的地理區域。由於在這個 10 公里半徑範圍內只找到 10 個相符項目,查詢引擎只需執行較少工作,即可依距離識別及排序這些點 (如
$near隱含執行)。因此索引掃描成本較低,為 6 個讀取單位。 - 100km Radius Query:這項查詢涵蓋的範圍大得多。查詢會在半徑 100 公里內找到 1,000 個潛在相符項目。為了滿足前 10 個最近點的要求,查詢引擎需要計算距離,並在索引中排序更大的候選集 (最多 1,000 個點)。雖然這項查詢也只傳回 10 份文件,但由於需要篩選和排序更多點,因此需要額外的運算工作,地理空間查詢費用也較高,為 9 個讀取單位。
點讀
點讀取計費範例:
- 單一 1 KiB 文件的點讀取。消耗:1 個讀取單元
- 單一 4 KiB 文件的點讀取。消耗:1 個讀取單元
- 單一 1 MiB 文件的點讀取。消耗:256 個讀取單位
- 讀取 100 份文件,每份 1 KiB。消耗:100 個讀取單位
掃描
以下範例包含掃描文件或索引項目的情境。
掃描文件
- 查詢掃描 100 份文件,每份 1 KiB。消耗:25 個讀取單位
掃描索引
無論掃描的是文件或索引,掃描費用 (以位元組為單位) 都相同。不過,索引項目通常較小。因此,通常能以更符合成本效益的方式掃描資料。
- 查詢會掃描 100 個索引項目,每個項目 1 KiB。消耗:25 個讀取單位。
- 查詢會掃描 100 個索引項目,每個項目 128 位元組。消耗:4 個讀取單位。
文件或索引項目大小下限
在某些情況下,可能不需要讀取文件或索引項目的內容,就能滿足查詢。包括簡單的計數查詢,例如計算集合中的文件總數。在這種情況下,每掃描一個項目,最低費用為 32 個位元組。
- 計算集合中的文件數量。查詢會掃描集合中的 1000 個項目。消耗:8 個讀取單位。
掃描和點讀取作業的組合
許多查詢會結合掃描和點讀取作業,以完成作業。
- 查詢會掃描 128 個索引項目 (每個 256 位元組),並對 128 份文件執行點讀取 (每份 4 KiB)。消耗:136 個讀取單元,包含:
- 128 個讀取單位 (用於點讀取)
- 索引掃描:8 個讀取單位
查詢說明
查詢說明可協助您瞭解資料庫如何執行查詢。提供的詳細資料可協助您最佳化查詢。
使用查詢說明功能時,須支付下列費用:
- 執行查詢的查詢說明:會產生查詢費用。
- 使用「僅限計畫」選項的查詢說明。消耗:1 個讀取單元 (查詢的最低費用)
寫入作業
寫入作業 (建立、更新和刪除) 的費用,取決於作業期間建立、修改或刪除的文件和索引大小。寫入作業會耗用寫入單元。寫入單位是以 1 KiB 為一組計算。
簡單的寫入作業 (例如依文件 ID 更新) 只會產生寫入費用。如果寫入作業需要查詢才能完成,則會額外產生與查詢相關的讀取費用。
請參閱以下範例。
建立
- 建立新的 10 KiB 文件,不含索引。消耗:10 個寫入單位
- 在集合中建立 1 KiB 的文件,其中包含 1 個 256 位元組的索引項目。消耗:2 個寫入單位
更新
- 依文件 ID 找出 10 KiB 的文件,並在不建立集合索引的情況下更新。消耗:10 個寫入單位
- 依文件 ID 找出 1 KiB 的文件,並以 256 位元組的 1 個索引項目更新 1 個欄位。消耗:3 個寫入單位。注意:在這種情況下,更新索引項目會耗用 2 個寫入單位,一個用於刪除,另一個用於重新建立索引項目。
- 依文件 ID 尋找 1 KiB 的文件,但不更新任何內容 (不進行任何變更)。消耗:1 個寫入單位 (最低寫入費用)
- 查詢集合中所有 1 KiB 的文件 (掃描 1, 000 份文件),並在集合中插入新的 256 位元組欄位 (不含索引):1,000 個讀取單位和 1, 000 個寫入單位。
刪除
- 刪除 1 KiB 的文件,該文件在集合中有 1 個索引。消耗:2 個寫入單位
- 刪除 1 KiB 的文件,該文件在集合中沒有索引。消耗:1 個寫入單位
索引建構作業
索引建構作業會針對建構作業期間建立或修改的索引項目收費。每當新增或移除索引定義時,就會產生這些費用。索引項目的計費方式與寫入作業相同,每 1 KiB 產生 1 個寫入單位。
- 為含有 500 份文件的集合建立新索引,建立的索引項目大小各為 1 KiB。消耗 500 個寫入單位。
- 刪除含有 500 份文件的集合現有索引,刪除的索引項目大小各為 1 KiB。消耗 500 個寫入單位。