簡體   English   中英

什么決定了 DynamoDB 表中的分區數?

[英]What decides the number of partitions in a DynamoDB table?

我是 DynamoDB 的初學者,我的在線構造函數沒有回答他的問題,哈哈,我對此感到困惑。 我知道分區鍵決定了將放置項目的分區。 我也知道分區數是根據吞吐量或存儲使用著名公式計算的

所以假設一個表有 user_id 作為它的分區鍵,有 200 個 user_id。 這是否自動意味着我們有 200 個分區? 如果是這樣,我們為什么不計算沒有。 基於著名公式的分區? 謝謝

讓我們建立兩件事。

  1. 一個 DynamoDB 分區可以支持 3000 次讀取操作和 1000 次寫入操作。 它在讀寫操作之間保持分隔,因此它們不會相互干擾。 如果您有一個配置為支持 18000 次讀取和 6000 次寫入的表,您將至少有 12 個分區,但可能還有一些用於一些頭部空間。
  2. 預配容量表默認有 1 個分區,但按需分區默認有 4 個分區。

所以,直接回答你的問題。 僅僅因為您有 200 個項目,並不意味着您有 200 個分區。 如果您的表處於預配置容量模式,那么這 200 個項目很可能只在一個分區中。 如果表的配置發生變化或需要更多流量,這些項目可能會移動到新分區。

DynamoDB 會在幾個不同的時間添加分區。

  1. 當分區的存儲大小增長超過 10GB 時。 DynamoDB 可能會看到您正在獲取數據並嘗試主動執行此操作,但 10GB 是上限。
  2. 當您的表需要每秒支持當前正在執行的更多操作時。 這可以手動發生,因為您將表配置為支持 20,000 次讀取/秒,而之前我只支持 2000 次。DynamoDB 必須添加分區並移動數據才能處理 20,000 次讀取/秒。 或者可能會自動添加分區,因為您在 DynamoDB 自動縮放中配置了下限和上限值,並且 DynamoDB 感覺到您的 ops/sec 正在攀升,因此將調整分區數量以響應容量異常。
  3. 您的表處於按需容量模式,DynamoDB 嘗試自動保持 2 倍於之前的高容量標記。 例如,假設您的表剛剛第一次達到 10,000 RCU。 DynamoDB 會看到它已經超過了您之前的高水位線,並開始添加更多分區,因為它會嘗試保持 2 倍的容量准備就緒,以防您像剛才那樣再次達到峰值。
  4. DynamoDB 正在積極監控您的表,如果它發現一個或多個項目特別受到重擊(熱鍵),則它們位於同一分區中,這可能會創建一個熱分區。 如果發生這種情況,DynamoDB 可能會拆分表以幫助隔離這些項目並防止或修復熱分區情況。

還有一兩個其他更罕見的邊緣案例,但如果您遇到這種情況,您可能會與 AWS Support 聯系。

注意:一旦 DynamoDB 創建分區,分區的數量就不會減少,這是可以的。 吞吐量稀釋不再是 DynamoDB 中的事情。

分區鍵值被散列以確定將數據項放入的實際分區。

因此,不同分區鍵值的數量對物理分區數量的影響為零。

唯一影響分區物理數量的是 RCU/WCU(吞吐量)和存儲的數據量。

  • Nbr 分區 Pt = RCU/3000 + WCU/1000
  • Nbr 分區 Ps = GB/10

除非以上之一大於 1.0,否則可能只有一個分區。 但我敢肯定,當您接近極限時,分裂就會發生,具體時間只有 AWS 知道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM