【问题标题】:Cassandra Column LimitCassandra 列限制
【发布时间】:2019-04-11 15:24:02
【问题描述】:

使用 Cassandra 时,在 cqlsh 中输入:

cqlsh:info> SELECT count(*) FROM info.customerinfo WHERE KEY = 'ds10128832';

得到以下结果:

 count
-------
 10000

Default LIMIT of 10000 was used. Specify your own LIMIT clause to get more results.

基本上我想知道rowkeyds10128832 中已经存储了多少列。

输出是否意味着我在该键中存储了 10000 列,并且由于 LIMIT 为 10000,因此无法向其中添加更多列?如果达到 10000,则不会向该键插入更多列?如果是,我该如何改变这种情况?我必须设置LIMIT 吗?因为我有很多列要存储所以我不想有LIMIT

【问题讨论】:

    标签: cassandra cqlsh


    【解决方案1】:

    Cassandra 术语在分区和行之间有所不同。查询结果显示分区键ds10128832有10000行。

    实际上,正如 catpaws 指出的那样,默认限制为 10000,因此您可能有更多带有该分区键的行。要计算其余部分,您需要指定更高的 LIMIT 子句,例如:

    cqlsh:info> SELECT count(*) FROM info.customerinfo WHERE KEY = 'ds10128832' LIMIT 100000;

    如果您发现在查询期间一直达到限制,您可能需要向上增加限制数。

    在您的问题中,您提到了计算 COLUMNS,而我已经回答了关于 ROWS 的问题。我希望我没有误解你的意图。在内部,Cassandra 根据您的排序键将“行”存储为列(实际上是列集),这就是我假设您所指的内容。在这种情况下,行话很重要。 catpaws 提到有 2B 列限制,这包括基于排序键和行的所有子列,这将导致限制。您的每一行都将贡献一些实际(内部)列,这些列的数量等于架构中非主键的值的数量。

    例如,如果您的表是

    创建表信息.customerinfo ( 关键文本, 帐户文本, 电子邮件文本, 网名文字, PRIMARY KEY(密钥,帐户) );

    那么上面的计数将计算分区键“ds10128832”上的“帐户”行数。每个(键、帐户)组合将是一个唯一的逻辑行,它(内部)是两列:一列用于电子邮件,一列用于屏幕名称。在达到 Cassandra 规定的列中的 2B 限制之前,假设每个 customerinfo“键”可能有 1B 个这样的帐户。

    编辑:达到限制将引发异常。

    【讨论】:

      【解决方案2】:

      一个分区(行)中的最大列数为 2B。输出中的默认 LIMIT 意味着 cqlsh 将其显示的结果数限制为 10000。输出中的默认 LIMIT 在此页面上进行了说明:http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/select_r.html?scroll=reference_ds_d35_v2q_xj__specifying-rows-returned-using-limit

      在 Cassandra 2.1.1 中,您可以使用 cqlsh 中的查询分页来获取 100 行块中的查询输出,然后是更多提示:http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/paging.html

      CQL 事物(例如分区中的列)在此页面上列出了硬性上限:http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/refLimits.html

      选择表达式中使用的 COUNT(*) 返回匹配查询的行数:http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/select_r.html?scroll=reference_ds_d35_v2q_xj__counting-returned-rows

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-20
        • 2015-04-18
        • 1970-01-01
        • 2017-06-03
        • 2016-07-03
        • 1970-01-01
        • 2016-03-29
        • 2013-06-06
        相关资源
        最近更新 更多