

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 預估 Amazon Keyspaces 中靜態資料欄的容量耗用
<a name="static-columns"></a>

在具有叢集資料欄的 Amazon Keyspaces 資料表中，您可以使用 `STATIC`關鍵字來建立靜態資料欄。儲存在靜態資料欄中的值會在邏輯分割區中的所有資料列之間共用。當您更新此欄的值時，Amazon Keyspaces 會自動將變更套用至分割區中的所有資料列。

本節說明如何在寫入靜態資料欄時計算資料的編碼大小。此程序與將資料寫入資料至資料列非靜態資料欄的程序分開處理。除了靜態資料的大小配額之外，靜態資料欄上的讀取和寫入操作也會獨立影響資料表的計量和輸送量容量。如需使用靜態資料欄和分頁範圍讀取結果時 Apache Cassandra 的功能差異，請參閱 [分頁](functional-differences.md#functional-differences.paging)。

**Topics**
+ [計算 Amazon Keyspaces 中每個邏輯分割區的靜態資料欄大小](static-columns-estimate.md)
+ [預估 Amazon Keyspaces 中靜態資料的讀取/寫入操作的容量輸送量需求](static-columns-metering.md)

# 計算 Amazon Keyspaces 中每個邏輯分割區的靜態資料欄大小
<a name="static-columns-estimate"></a>

本節提供如何估計 Amazon Keyspaces 中靜態資料欄編碼大小的詳細資訊。當您計算帳單和配額用量時，會使用編碼大小。當您計算資料表的佈建輸送量容量需求時，也應該使用編碼的大小。若要計算 Amazon Keyspaces 中靜態資料欄的編碼大小，您可以使用下列準則。
+ 分割區索引鍵最多可包含 2048 個位元組的資料。分割區索引鍵中的每個索引鍵資料欄最多需要 3 個位元組的中繼資料。這些中繼資料位元組會計入每個分割區 1 MB 的靜態資料大小配額。計算靜態資料的大小時，您應該假設每個分割區索引鍵資料欄使用完整 3 個位元組的中繼資料。
+ 根據資料類型使用靜態資料欄資料值的原始大小。如需資料類型的詳細資訊，請參閱 [資料類型](cql.elements.md#cql.data-types)。
+ 將 104 個位元組新增至中繼資料的靜態資料大小。
+ 叢集資料欄和一般、非主索引鍵資料欄不會計入靜態資料的大小。若要了解如何預估資料列中非靜態資料的大小，請參閱 [估計 Amazon Keyspaces 中的資料列大小](calculating-row-size.md)。

靜態資料欄的總編碼大小是根據下列公式：

```
partition key columns + static columns + metadata = total encoded size of static data
```

請考慮下列資料表範例，其中所有資料欄的類型皆為整數。資料表有兩個分割區索引鍵資料欄、兩個叢集資料欄、一個規則資料欄和一個靜態資料欄。

```
CREATE TABLE mykeyspace.mytable(pk_col1 int, pk_col2 int, ck_col1 int, ck_col2 int, reg_col1 int, static_col1 int static, primary key((pk_col1, pk_col2),ck_col1, ck_col2));
```

在此範例中，我們會計算下列陳述式的靜態資料大小：

```
INSERT INTO mykeyspace.mytable (pk_col1, pk_col2, static_col1) values(1,2,6);
```

若要估計此寫入操作所需的總位元組數，您可以使用下列步驟。

1. 透過新增存放在資料欄中的資料類型位元組和中繼資料位元組，來計算分割區索引鍵資料欄的大小。對所有分割區索引鍵資料欄重複此操作。

   1. 計算分割區索引鍵 (pk\$1col1) 第一欄的大小：

      ```
      4 bytes for the integer data type + 3 bytes for partition key metadata = 7 bytes
      ```

   1. 計算分割區索引鍵 (pk\$1col2) 第二欄的大小：

      ```
      4 bytes for the integer data type + 3 bytes for partition key metadata = 7 bytes
      ```

   1. 新增兩個資料欄，以取得分割區索引鍵資料欄的總預估大小：

      ```
      7 bytes + 7 bytes = 14 bytes for the partition key columns
      ```

1. 新增靜態資料欄的大小。在此範例中，我們只有一個靜態資料欄可存放整數 （需要 4 個位元組）。

1. 最後，若要取得靜態資料欄資料的總編碼大小，請為主索引鍵資料欄和靜態資料欄新增位元組，並為中繼資料新增額外的 104 個位元組：

   ```
   14 bytes for the partition key columns + 4 bytes for the static column + 104 bytes for metadata = 122 bytes.
   ```

您也可以使用相同的陳述式更新靜態和非靜態資料。若要估計寫入操作的總大小，您必須先計算非靜態資料更新的大小。然後計算資料列更新的大小，如 的範例所示[估計 Amazon Keyspaces 中的資料列大小](calculating-row-size.md)，並新增結果。

在這種情況下，您可以寫入總計 2 MB，1 MB 是資料列大小配額上限，而 1 MB 是每個邏輯分割區靜態資料大小上限的配額。

若要計算相同陳述式中靜態和非靜態資料更新的總大小，您可以使用下列公式：

```
(partition key columns + static columns + metadata = total encoded size of static data) + (partition key columns + clustering columns + regular columns + row metadata = total encoded size of row)
= total encoded size of data written
```

請考慮下列資料表範例，其中所有資料欄的類型皆為整數。資料表有兩個分割區索引鍵資料欄、兩個叢集資料欄、一個規則資料欄和一個靜態資料欄。

```
CREATE TABLE mykeyspace.mytable(pk_col1 int, pk_col2 int, ck_col1 int, ck_col2 int, reg_col1 int, static_col1 int static, primary key((pk_col1, pk_col2),ck_col1, ck_col2));
```

在此範例中，我們在將資料列寫入資料表時計算資料的大小，如下列陳述式所示：

```
INSERT INTO mykeyspace.mytable (pk_col1, pk_col2, ck_col1, ck_col2, reg_col1, static_col1) values(2,3,4,5,6,7);
```

若要估計此寫入操作所需的總位元組數，您可以使用下列步驟。

1. 計算靜態資料的總編碼大小，如先前所示。在此範例中，它是 122 個位元組。

1. 遵循 中的步驟，根據非靜態資料的更新，新增資料列的總編碼大小大小[估計 Amazon Keyspaces 中的資料列大小](calculating-row-size.md)。在此範例中，資料列更新的總大小為 134 個位元組。

   ```
   122 bytes for static data + 134 bytes for nonstatic data = 256 bytes.
   ```

# 預估 Amazon Keyspaces 中靜態資料的讀取/寫入操作的容量輸送量需求
<a name="static-columns-metering"></a>

靜態資料與 Cassandra 中的邏輯分割區相關聯，而不是與個別資料列相關聯。透過跨越多個實體儲存分割區，Amazon Keyspaces 中的邏輯分割區幾乎可以不受大小限制。因此，Amazon Keyspaces 會分別測量靜態和非靜態資料的寫入操作。此外，包含靜態和非靜態資料的寫入需要額外的基礎操作才能提供資料一致性。

如果您同時執行靜態和非靜態資料的混合寫入操作，這會產生兩個不同的寫入操作，一個用於非靜態資料，另一個用於靜態資料。這同時適用於隨需和佈建的讀取/寫入容量模式。

下列範例提供詳細資訊，說明如何在計算具有靜態資料欄之 Amazon Keyspaces 中資料表的佈建輸送量需求時，預估所需的讀取容量單位 (RCUs) 和寫入容量單位 (WCUs)。您可以使用下列公式，預估資料表處理包含靜態和非靜態資料的寫入所需的容量：

```
2 x WCUs required for nonstatic data + 2 x WCUs required for static data
```

例如，如果您的應用程式每秒寫入 27 KBs的資料，且每次寫入包含 25.5 KBs 的非靜態資料和 1.5 KBs 的靜態資料，則資料表需要 56 個 WCUs (2 x 26 WCUs \$1 2 x 2 WCUs)。

Amazon Keyspaces 會測量靜態和非靜態資料的讀取，與多個資料列的讀取相同。因此，相同操作中讀取靜態和非靜態資料的價格，取決於為執行讀取而處理的資料彙總大小。

若要了解如何使用 Amazon CloudWatch 監控無伺服器資源，請參閱 [使用 Amazon CloudWatch 監控 Amazon Keyspaces](monitoring-cloudwatch.md)。