本頁面提供範例,說明在一些常見情境中,如何計算帳單單位。請注意,根據查詢計畫、資料形狀和可用索引等因素,每項查詢處理的資料可能有所不同。
讀取作業
大多數讀取作業都涉及對特定文件執行點讀取,或是根據 ID 掃描資料範圍。讀取作業會消耗讀取單元。請參閱以下範例。
全文搜尋
全文搜尋查詢的費用會區分兩種:對文字索引執行搜尋的費用,以及擷取文件的費用。在文字索引中執行搜尋的費用取決於查詢的複雜度,以及索引中掃描的資料量 (用於尋找結果)。影響這項費用的因素包括搜尋字詞的數量和性質 (例如字詞、片語)、是否套用關聯性評分,以及需要檢查的索引項目數量。檢索相關文件的費用取決於搜尋階段完成後擷取的文件數量和大小。
下表列出為植物苗圃的電子商務產品目錄執行全文搜尋查詢時,相關的費用。這個範例假設集合中有 200,000 個產品資訊,每個產品資訊文件為 2 KiB,對應的文字搜尋索引大小約為 100 MiB。
| 查詢 | 程式碼範例 | 每個查詢預估耗用的讀取單元 | 預估費用 (區域:us-central1,以美元計價) |
|---|---|---|---|
| 搜尋稀有的「dry water」堆疊式平盤產品,結果會擷取 3 份文件。 | |
讀取單元總數為 10 根據全文搜尋的 7 個單位,以及傳回文件的 3 個額外單位。 |
每百萬次查詢 $0.50 美元 |
| 搜尋所有室內柑橘樹,結果會擷取 36 份文件。 | |
讀取單元總數:42 根據全文搜尋的 6 個單位,以及傳回文件的 36 個額外單位計算。 |
每 100 萬次查詢 $2.10 美元 |
| 搜尋陽台花盆,這類產品的相符結果很多。依關聯性排序結果,並限制為前 50 個搜尋結果。 | |
75 個讀取單元 以全文搜尋 25 個單位,以及傳回的文件額外 50 個單位為準。 |
每百萬次查詢 $3.75 美元 |
以下範例說明不同的查詢模式如何影響費用:
- 「dry water」查詢包含詞組 (
"dry water") 和其他字詞。片語搜尋較為複雜,因為查詢引擎需要檢查符記的鄰近程度和順序,因此搜尋階段會產生 7 個讀取單位。由於相符的文件很少,因此文件擷取費用較低。 - 「室內」、「柑橘」、「樹」查詢會搜尋三個不同的字詞。 雖然每個字詞的複雜程度略低於詞組搜尋,但仍需要查詢多個符記。與「dry water」範例相比,這個範例的搜尋索引掃描費用略低,為 6 個讀取單位,但傳回了 36 份文件,因此總費用較高。
- 陽台花盆查詢的全文搜尋費用最高,為 25 個單位,大幅高於其他查詢。主要原因是這項查詢要求結果依據與許多文件相符的字詞關聯性排序 (
.sort({score: {$meta: "textScore"}}))。為找出前 50 個最相關的結果,查詢引擎必須找出「陽台」或「花盆」的所有潛在相符項目,計算每個項目的相關性分數,然後排序。即使最終只會擷取 50 份文件,但對索引中大量候選項目進行評分和排序的過程,仍需要大量運算資源。字詞的廣泛程度加上相關性評分的負擔,會導致搜尋階段的費用較高。
地理空間查詢
地理空間查詢的費用取決於查詢的複雜度、使用的特定條件和排序方式,以及掃描相關地理空間索引中所有資料所需的資源。
下表列出地圖應用程式執行地理空間查詢時的相關費用。這個範例假設有 1,000,000 個文件代表搜尋點,每個搜尋點文件為 1KiB,對應的地理空間索引大小約為 60MiB。
| 查詢 | 程式碼範例 | 每個查詢預估耗用的讀取單元 | 預估費用 (區域:us-central1,以美元計價) |
|---|---|---|---|
| 在 10 公里範圍內尋找所有興趣點,並傳回 10 個相符結果。 | |
總共 16 個讀取單位。 地理空間查詢為 6 個讀取單元,傳回的文件則為額外 10 個單元。 |
每百萬次查詢 $0.80 美元 |
| 找出距離最遠 100 公里的所有景點,並從 1,000 個相符項目中傳回距離最近的 10 個景點 | |
總共 19 個讀取單位。 地理空間查詢為 9 個讀取單位,傳回的文件則為額外 10 個單位。 |
每百萬次查詢 $0.95 美元 |
以下範例說明不同的查詢模式如何影響費用:
- 10 公里半徑查詢:這項查詢會掃描較小的地理區域。由於查詢引擎只在這個 10 公里半徑內找到 10 個相符項目,因此識別這些點並依距離排序 (如
$near隱含的排序方式) 時,需要執行的工作較少。因此索引掃描費用較低,為 6 個讀取單位。 - 100 公里半徑查詢:這項查詢涵蓋的範圍較大,這項查詢會在 100 公里半徑內找出 1,000 個潛在相符項目。如要滿足前 10 個最接近點的要求,查詢引擎必須計算距離,並在索引中排序數量多得多的候選項目 (最多 1,000 個點)。由於需要篩選及排序更多點,因此這項額外的運算工作會導致地理空間查詢成本較高,達到 9 個讀取單位,相較之下,10 公里查詢的成本雖然也只傳回 10 份文件,但僅有 1 個讀取單位。
點讀
點讀的計費範例如下:
- 讀取單一 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 的文件,並更新 1 個欄位,其中包含 1 個 256 位元組的索引項目。消耗: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 個寫入單位。