服务器端警告:在没有分区键的情况下使用聚合查询

Server-side warning: Aggregation query used without partition key

在使用 Cassandra 的 C/C++ 驱动程序时,我有时会在我的控制台中看到这些消息:

1460937092.140 [WARN] (src/response.cpp:51:char*
      cass::Response::decode_warnings(char*, size_t)):
      Server-side warning: Aggregation query used without partition key

想知道是否有人知道那是什么意思。我应该在我的代码中寻找什么可能会产生这个错误,或者它只是我无法控制的服务器端的东西?

该警告告诉您,您正在使用不带分区键的用户定义聚合执行 select。这可能是一个内置的,如 avg、count、min、max 或可以有一个你自己的。

一个例子:

select avg(temperature) from weather_data;

VS

select avg(temperature) from weather_data where id = 1;

第一个示例将扫描集群中的所有数据行,并且可能会严重影响性能。如果有足够的行,查询可能会超时。

第二种将只扫描单个数据分区,将查询保持在一台服务器上,这是推荐的用法。