步骤 3:为表设置吞吐容量 - Amazon Keyspaces (for Apache Cassandra)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

步骤 3:为表设置吞吐容量

本教程将介绍如何调整 cqlsh 以便在设定的时间范围内加载数据。由于您事先知道自己执行了多少次读取和写入,因此请使用预置容量模式。完成数据传输后,应将表的容量模式设置为与应用程序的流量模式相匹配。要了解有关容量管理的更多信息,请参阅Amazon Keyspaces 中的无服务器资源管理(针对 Apache Cassandra)

在预置容量模式下,您可以提前指定要为表预置多少读取和写入容量。写入容量按小时计费,并以写入容量单位 (WCU) 计量。每个 WCU 的写入容量都足以支持每秒写入 1 KB 的数据。加载数据时,写入速率必须低于在目标表上设置的最大 WCU(参数:write_capacity_units)。

默认情况下,您可以为一个表预置多达 40,000 个 WCU,为账户中的所有表预置 80,000 个 WCU。如果您需要额外的容量,可以在Service Quotas 控制台中请求增加配额。有关配额的更多信息,请参阅亚马逊密钥空间配额(适用于 Apache Cassandra)

计算插入所需的 WCU 的平均数量

每秒插入 1 KB 的数据需要 1 个 WCU。如果您的 CSV 文件有 360,000 行,并且您想在 1 小时内加载所有数据,则必须每秒写入 100 行(360,000 行/60 分钟/60 秒 = 每秒 100 行)。如果每行最多有 1 KB 的数据,要每秒插入 100 行,必须向表预置 100 个 WCU。如果每行有 1.5 KB 的数据,则需要两个 WCU 才能每秒插入一行。因此,要每秒插入 100 行,必须配置 200 个 WCU。

要确定每秒插入一行需要多少 WCU,请将平均行大小(以字节为单位)除以 1024,然后四舍五入到最接近的整数。

例如,如果平均行大小为 3000 字节,则需要三个 WCU 才能每秒插入一行。

ROUNDUP(3000 / 1024) = ROUNDUP(2.93) = 3 WCUs
计算数据加载时间和容量

现在您知道了 CSV 文件中的平均大小和行数,可以计算出在给定时间内加载数据需要多少个 WCU,以及使用不同的 WCU 设置加载 CSV 文件中所有数据所花费的大致时间。

例如,如果文件中的每一行为 1 KB,而您的 CSV 文件中有 1,000,000 行,则要在 1 小时内加载数据,您需要在该小时内为表预置至少 278 个 WCU。

1,000,000 rows * 1 KBs = 1,000,000 KBs 1,000,000 KBs / 3600 seconds =277.8 KBs / second = 278 WCUs
配置预置容量设置

可以在创建表时设置表的写入容量设置,也可以使用 ALTER TABLE CQL 命令来设置表的写入容量设置。以下是使用 ALTER TABLE CQL 语句更改表的预置容量设置的语法。

ALTER TABLE mykeyspace.mytable WITH custom_properties={'capacity_mode':{'throughput_mode': 'PROVISIONED', 'read_capacity_units': 100, 'write_capacity_units': 278}} ;

有关完整的语言参考,请参见ALTER TABLE