【问题标题】:Cassandra query collection while specifying a partition key指定分区键时的 Cassandra 查询集合
【发布时间】:2018-12-18 14:43:08
【问题描述】:

我一直在阅读 Cassandra 中的索引,但在为集合、列表或地图等集合创建索引时,我有点困惑。

假设我有下表和用户索引,如下所示

CREATE TABLE chatter.channels (
    id text PRIMARY KEY,
    users set<text>
); 

CREATE INDEX channels_users_idx ON chatter.channels (values(users));

INSERT INTO chatter.channels (id, users) VALUE ('ch1', {'jeff', 'jenny'});

在文档中,至少我到目前为止发现的内容表明,这可能会对性能产生巨大影响,因为索引是在节点上本地创建的。并且给出的所有示例都查询如下表

SELECT * FROM chatter.channels WHERE users CONTAINS 'jeff';

据我了解,这会影响性能,因为未指定分区键并且必须查询所有节点。但是,如果我要发出如下查询

SELECT * FROM chatter.channels WHERE id = 'ch1' AND users CONTAINS 'jeff';

(给出分区键)那么我的性能还会受到影响吗?

我怎样才能自己检查呢?在 SQL 中,我可以运行 EXPLAIN 并获得一些有用的信息。 Cassandra 有类似的东西吗?

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    Cassandra 提供了跟踪能力,这有助于跟踪 Cassandra 中查询的读写进程。

    要查看跟踪,请在您的 Cassandra 节点之一上打开 -> cqlsh 并运行以下命令:

    cqlsh> tracing on;
    Now tracing requests.
    cqlsh> use [KEYSPACE];
    

    我希望这有助于检查查询的性能。

    【讨论】:

      猜你喜欢
      • 2020-07-18
      • 2014-05-12
      • 2016-03-22
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      相关资源
      最近更新 更多