📅  最后修改于: 2023-12-03 15:37:18.781000             🧑  作者: Mango
Cassandra 中的分区是数据分散和分散负载的基本单位。分区键是用于将数据在节点之间分配的值。有效使用分区是确保 Cassandra 应用在扩展和高性能方面顺利工作的关键。
选择分区键通常是决定应用程序能否在 Cassandra 中有效工作的最重要问题。您的分区键应该是查询的一部分,并且应该在必要时用于过滤数据。
在选择分区键时,请注意以下几点:
通常,您需要采用锦囊或对数据进行抽取,以确保正确选择分区键。
数据分散和分散负载的原则表明,分区大小应该是平均的,并且应该成倍增加。Cassandra 曾经有一个 2 GB 的分区大小限制,但是从版本 3.0 开始,它已经被取消了。
当分区过大时,Cassandra 的读取性能会下降。建议一个分区不要超过 100 MB。当分区过小时,无法利用 Cassandra 的分布式优势。
Cassandra 支持复合分区键。这意味着您可以使用多个列作为分区键。这样,您不仅可以更好地控制数据分布,而且还可以更好地支持多查询/多数据库需求和查询层次结构。
要使用复合分区键,请将逗号分隔的列列表(例如“partitionKey1,partitionKey2”)传递给 CREATE TABLE 语句:
CREATE TABLE mytable (
partitionKey1 text,
partitionKey2 text,
column1 text,
column2 text,
PRIMARY KEY ((partitionKey1, partitionKey2), column1)
);
命中率是指成功从缓存中读取数据的比率。成功使用分区键是提高命中率的关键,这样可以最小化单个分区上的 I/O 操作。分区命中率是一种度量,它告诉您查询中使用的分区键是否有效。
要了解分区命中率,请使用 CQLSH 工具中的 nodetool cfhistograms
命令:
nodetool cfhistograms keyspace.table
此命令将详细说明分区的命中率统计信息。您可以使用前面提到的最佳实践来查看命中率,以确定是否需要更改分区键。
分区是 Cassandra 中数据分散和分散负载的基本单位。在选择分区键时,请遵循一些最佳实践,例如选择正确的键、正确的大小和复合键。通过这些指南,您可以更好地控制数据分布,并提高 Cassandra 应用程序的查询性能。