【发布时间】:2015-02-01 19:04:39
【问题描述】:
我正在使用 datastax 企业 4.5。就任何性能而言,定义复合分区键是否比仅定义单个列分区键有任何缺点?如果复合分区的一列基数高,而复合分区的另一列基数低怎么办?
【问题讨论】:
我正在使用 datastax 企业 4.5。就任何性能而言,定义复合分区键是否比仅定义单个列分区键有任何缺点?如果复合分区的一列基数高,而复合分区的另一列基数低怎么办?
【问题讨论】:
复合键用于增加分区的基数。例如,像PRIMARY KEY ((x,y)) 这样的键,具有 5 个 x 值和 10 个 y 值,最终将创建 50 个不同的分区。如果您需要更多地分发数据,这很有用,但如果您有一个具有足够高基数的变量,则这是不必要的。
一个更现实的例子可能是创建PRIMARY KEY ((Gender, ZipCode), age, userid) 的复合键。如果您只使用 Gender 作为分区键,您最终将只有 2 个分区来存储您的数据!添加邮政编码允许总共 99999 个邮政编码或(zip+4 获得更多),同时仍然允许您按性别隔离数据。这对于按位置或类似的东西查找人口统计信息是理想的。
基本上,经验法则是您希望使用大量分区来避免集群中的热点,而复合键允许通过组合字段的基数来轻松增加分区数量。
【讨论】: