本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
計算 Amazon Keyspaces 中每個邏輯分割區的靜態資料欄大小
本節提供如何估計 Amazon Keyspaces 中靜態資料欄編碼大小的詳細資訊。當您計算帳單和配額使用時,會使用編碼大小。當您計算資料表的佈建輸送量需求時,也應該使用編碼大小。若要計算 Amazon Keyspaces 中靜態資料欄的編碼大小,您可以使用下列準則。
-
分割區索引鍵最多可包含 2048 個位元組的資料。分割區索引鍵中的每個索引鍵欄最多需要 3 個位元組的中繼資料。這些中繼資料位元組會計入每個分割區 1 MB 的靜態資料大小配額。計算靜態資料的大小時,您應該假設每個分割區索引鍵欄使用完整 3 個位元組的中繼資料。
-
根據資料類型使用靜態資料欄資料值的原始大小。如需資料類型的詳細資訊,請參閱 資料類型。
-
將 104 個位元組新增至中繼資料的靜態資料大小。
-
叢集資料欄和一般、非主索引鍵資料欄不會計入靜態資料的大小。若要了解如何估算資料列中非靜態資料的大小,請參閱 估計 Amazon Keyspaces 中的資料列大小。
靜態資料欄的總編碼大小以下列公式為基礎:
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);
若要預估此寫入操作所需的總位元組數,您可以使用下列步驟。
-
透過新增存放在資料欄中的資料類型位元組和中繼資料位元組,來計算分割區索引鍵資料欄的大小。對所有分割區索引鍵資料欄重複此操作。
-
計算分割區索引鍵 (pk_col1) 第一欄的大小:
4 bytes for the integer data type + 3 bytes for partition key metadata = 7 bytes
-
計算分割區索引鍵 (pk_col2) 第二欄的大小:
4 bytes for the integer data type + 3 bytes for partition key metadata = 7 bytes
-
新增兩個資料欄,以取得分割區索引鍵資料欄的預估總大小:
7 bytes + 7 bytes = 14 bytes for the partition key columns
-
-
新增靜態資料欄的大小。在此範例中,我們只有一個靜態資料欄,可存放整數 (需要 4 個位元組)。
-
最後,若要取得靜態資料欄資料的總編碼大小,請為主要索引鍵資料欄和靜態資料欄新增位元組,並為中繼資料新增額外的 104 個位元組:
14 bytes for the partition key columns + 4 bytes for the static column + 104 bytes for metadata = 122 bytes.
您也可以使用相同的陳述式更新靜態和非靜態資料。若要估計寫入操作的總大小,您必須先計算非靜態資料更新的大小。然後計算資料列更新的大小,如 的範例所示估計 Amazon Keyspaces 中的資料列大小,並新增結果。
在這種情況下,您可以寫入總計 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);
若要估計此寫入操作所需的總位元組數,您可以使用下列步驟。
-
計算靜態資料的總編碼大小,如先前所示。在此範例中,它是 122 個位元組。
-
根據非靜態資料的更新,依照 中的步驟,新增資料列的總編碼大小大小估計 Amazon Keyspaces 中的資料列大小。在此範例中,資料列更新的總大小為 134 個位元組。
122 bytes for static data + 134 bytes for nonstatic data = 256 bytes.