计算 Amazon Keyspaces 中每个逻辑分区的静态列大小 - Amazon Keyspaces(Apache Cassandra 兼容)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

计算 Amazon Keyspaces 中每个逻辑分区的静态列大小

本节详细介绍如何估算 Amazon Keyspaces 中的编码静态列大小。在计算账单和限额使用量时,应使用编码大小。在计算表的预置吞吐容量需求时,也应使用编码大小。要计算 Amazon Keyspaces 中的编码静态列大小,可以遵循以下准则。

  • 分区键最多可包含 2048 个字节的数据。分区键中的每个键列最多需要 3 个字节的元数据。这些元数据字节计入每个分区 1MB 的静态数据大小限额。计算静态数据大小时,应假设每个分区键列使用全部 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);

要估算此写入操作所需的总字节数,可以按照以下步骤操作。

  1. 通过将存储在一个分区键列中的数据类型的字节和元数据字节相加,计算该列的大小。针对所有分区键列重复此操作。

    1. 计算分区键第一列 (pk_col1) 的大小:

      4 bytes for the integer data type + 3 bytes for partition key metadata = 7 bytes
    2. 计算分区键第二列 (pk_col2) 的大小:

      4 bytes for the integer data type + 3 bytes for partition key metadata = 7 bytes
    3. 将两列相加,得出分区键列的估算总大小:

      7 bytes + 7 bytes = 14 bytes for the partition key columns
  2. 加上静态列的大小。在此示例中,我们只有一个静态列用于存储一个整数(需要 4 个字节)。

  3. 最后,要得出编码静态列数据的总大小,请将主键列和静态列的字节相加,再加上元数据所需的 104 个字节:

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

您也可以使用相同的语句更新静态数据和非静态数据。要估算写入操作的总大小,必须先计算非静态数据更新的大小。然后计算行更新的大小(如估计 Amazon Keyspaces 中的行大小中的示例所示),并将结果相加。

在此示例中,您总共可以写入 2MB,1MB 是最大行大小限额,1MB 是每个逻辑分区的最大静态数据大小限额。

要计算同一语句中静态数据和非静态数据更新的总大小,可以使用以下公式:

(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 个字节。

  2. 按照估计 Amazon Keyspaces 中的行大小中的步骤,根据非静态数据的更新,加上编码行总大小。在此示例中,行更新的总大小为 134 个字节。

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