【问题标题】:What does "PER PARTITION LIMIT" means in cql query in cassandra?cassandra的cql查询中的“PER PARTITION LIMIT”是什么意思?
【发布时间】:2020-08-22 08:37:47
【问题描述】:

我有一个如下图的scylla表:

cqlsh:sampleks> describe table test;

CREATE TABLE test (
    client_id int,
    when timestamp,
    process_ids list<int>,
    md text,
    PRIMARY KEY (client_id, when) ) WITH CLUSTERING ORDER BY (when DESC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'ALL'}
    AND comment = ''
    AND compaction = {'class': 'TimeWindowCompactionStrategy', 'compaction_window_size': '1', 'compaction_window_unit': 'DAYS'}
    AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 172800
    AND max_index_interval = 1024
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99.0PERCENTILE';

我看到这就是我们查询它的方式。我在 cassandra 上工作已经很长时间了,所以这个 PER PARTITION LIMIT 对我来说是新事物(看起来像是最近添加的)。有人可以用外行语言的一些例子来解释这有什么作用吗?我找不到任何可以轻松解释的好文档。

SELECT * FROM test WHERE client_id IN ? PER PARTITION LIMIT 1;

【问题讨论】:

    标签: cassandra cqlsh scylla


    【解决方案1】:

    PER PARTITION LIMIT 子句在“宽分区方案”中很有帮助。 它只返回分区中的前两行。

    进行以下查询:

    aploetz@cqlsh:stackoverflow> SELECT client_id,when,md 
            FROM test PER PARTITION LIMIT 2 ;
    

    考虑到(client_id,when) 的主键定义,该查询将遍历每个client_id。然后,Cassandra 将只返回该分区的前两行(由 when 聚类),而不管 when 可能出现多少次。

    在这种情况下,我使用两个不同的client_ids(总共 2 个分区)将 7 行插入到您的 test 表中。使用 2 的 PER PARTITION LIMIT,我得到 4 行返回 (2 client_id x PER PARTITION LIMIT 2) == 4 行。

     client_id | when                            | md
    -----------+---------------------------------+-----
             1 | 2020-05-06 12:00:00.000000+0000 | md1
             1 | 2020-05-05 22:00:00.000000+0000 | md1
             2 | 2020-05-06 19:00:00.000000+0000 | md2
             2 | 2020-05-06 01:00:00.000000+0000 | md2
    
    (4 rows)
    

    【讨论】:

    猜你喜欢
    • 2012-08-15
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    • 2016-12-28
    • 2015-04-11
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    相关资源
    最近更新 更多