gpt4 book ai didi

java - cassandra 中的慢速选择查询

转载 作者:行者123 更新时间:2023-12-02 03:26:41 24 4
gpt4 key购买 nike

我有一个包含 3 个节点的 cassandra 集群。有一张表存储大约 400M 行。我点击下面的选择查询:

SELECT * FROM table_1 WHERE vuid in ('abc','def','ghi');

以上是示例查询。我们的生产环境中的 In 子句有 1000 个键。下面是表结构

CREATE TABLE dmp.user_profiles_9 (
vuid text PRIMARY KEY,
apnid text,
brand_model text,
first_seen timestamp,
ifa text,
last_seen timestamp,
msisdn text,
total_day_count int,
total_usage_count int,
user_type text
) WITH bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND comment = ''
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'chunk_length_in_kb': '64', 'class': '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 = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99PERCENTILE';

“in”子句中有 1000 个键,查询最多需要 5 秒。我们需要每天不断更新上述数据集。这项工作涉及全表扫描。为了尽快完成,每次阅读都应该更快。对于上述情况可以做什么?

最佳答案

您可以尝试的一种尝试是将 IN 子句拆分为多个查询,您可以异步执行此操作并将各个结果返回到完整的结果集中。

可以在 here 找到一个示例和更多讨论。 .

这将仅阻止一个节点进行协调,从而允许负载正确分散到其他节点。如果您进行此更改,它还将受益于 TokenAware 负载平衡策略,以便每次都会命中包含您正在查找的数据的节点。

关于java - cassandra 中的慢速选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38763759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com